2017-06-12 10 views
1

アップルのテレビからゲームコントローラのレイアウトを検出するにはどうすればよいですか?ゲームをより簡単にプレイできるコントローラのレイアウトが異なる場合は、コントロールを変更したいと思います。例えば、リンゴは、Nimbus Controllerは、2つのジョイスティックを底部に持つプレイステーションコントローラのような形をしていることが推奨されていますが、代わりに下部にDパッドとジョイスティックを備えたXboxのようなコントローラがあり、私は別のコントローラの制御に変更した、であるかを検出することができた場合、それはゲームコントローラのレイアウトの検出 - スウィフト

どれでも助けをプレイするゲームが容易になりますあなたが入力をゲームへの物理的なコントロールをマップするために、コントローラのプロファイルを使用する必要があります

答えて

0

ユーザーにはゲームコントローラーのレイアウトを求めるだけでした。 Ercell0からの答えは、ゲームコントローラに接続して使用するうえで便利ですが、私の質問には本当に答えません。

2

をいただければ幸いです。

コントローラーが自動的に検出されます。物理コントローラーはGCControllerオブジェクトで表され、GCGamepad、extendedGamepadなどのコントローラーコントロールを「プロファイル」します。各コントローラーに登録されているコントロールを確認する必要があります。

「あなたのアプリは、起動し、自動的に接続されたコントローラのリストを作成し、 オペレーティングシステムを終了した後:Discovering And Connecting Controllersのドキュメントから。 に接続されたすべてのコントローラのGCControllerオブジェクトの配列 を取得するには、コントローラクラスのメソッドを呼び出します。」りんごsample code彼らは.GCControllerDidConnect通知を登録してのセットアップ機能にGCControllerインスタンスとして通知オブジェクトをキャストに

をコントロールが存在する場合は、コントローラーを解析し、対応するハンドラーメソッドを割り当てます。

NotificationCenter.default.addObserver(self, selector: #selector(GameViewController.handleControllerDidConnectNotification(_:)), name: .GCControllerDidConnect, object: nil) 

@objc func handleControllerDidConnectNotification(_ notification: NSNotification) { 
    let gameController = notification.object as! GCController 
    registerCharacterMovementEvents(gameController) 
} 


    private func registerCharacterMovementEvents(_ gameController: GCController) { 
     //… 

    // Gamepad D-pad 
    if let gamepad = gameController.gamepad { 
     gamepad.dpad.valueChangedHandler = movementHandler 
    } 

    // Extended gamepad left thumbstick 
    if let extendedGamepad = gameController.extendedGamepad { 
     extendedGamepad.leftThumbstick.valueChangedHandler = movementHandler 
    } 


     //… 
    } 
関連する問題