8

私はObjective-Cでゲームに取り組んでいます。Siri リモートは GCMicroGamepad 経由でうまく機能し、実際の MFi コントローラーは GCGamepad 経由でうまく機能します。ただし、サードパーティの赤外線リモコンはゲーム内ではまったく機能しません (iPhone のリモート アプリや古い Apple TV の第 3 世代リモコンも機能しません)。

これらの入力を認識して区別するにはどうすればよいですか?


2 日後... サードパーティの TV リモコンまたは iPhone Remote.app を提示すると、UITapGestureRecognizer を使用して Up、Down、Left、Right、および Select イベントを正しく検出できることがわかりました。方向イベントは、実際にはこれらのタイプのリモコンにも固有のものです。Siri リモートは方向タップ イベントを生成しません。残念ながら、Siri リモート、サードパーティ、または iPhone Remote.app のいずれかで Select ボタンをタップすると、私のタップ認識エンジンから Select イベントが生成されます。2つを区別する方法が必要です。

私が見つけた唯一の違いは、Siri リモコンをタップするGCMicroGamepad のボタン A が押されることです。サードパーティのリモコンまたは iPhone Remote.app は、GCMicroGamepad にはまったく影響しません。しかし、GCMicroGamepad でタップ リリース イベントを監視し、そのイベントを使用して一致する Select ボタン イベントを除外するのは非常に洗練されていません。確かに、これは API の推奨される使用方法ではありません。それは良い長期的な解決策のようには思えません。GCMicroGamepad モードのときに Siri リモートに UI イベントの生成を停止するように指示できれば、それはすばらしいことです。

4

1 に答える 1

0

これを今すぐテストすることはできませんが、controllerUserInteractionEnabled プロパティを false に設定してGCEventViewControllerを使用することで、おそらく Siri Remote とサード パーティのリモートを区別できるでしょう。このように、Siri Remote の入力が UIKit に渡されないようにする必要があります (GCEventViewController が最初のレスポンダーである場合)。サードパーティのリモートの入力イベントは、Siri リモートとは異なり、GCMicroGamepad ではないため、UIKit を通過する可能性があります。

これまでのところ、Apple は複数の Siri Remote、iOS Remote、または IR Remote を使用したマルチプレイヤー ゲームをサポートしていません。しかし、iOS の Remote アプリがまもなくマルチプレイヤー ゲームをサポートするようになるので、それが実現する可能性があると思います(そのため、Apple TV は複数の GCMicroGamePad コントローラーを認識できるようになると思います)。

于 2016-03-07T03:53:31.643 に答える