2010-11-20 13 views
2

私は最初のマルチプレイヤーXNAゲームに取り組んでおり、Xbox360やPC上の各アクティブGamePadからの入力をチェックする必要があるため、コピーする必要はありません4つの異なるコントローラ用に同じコードを貼り付けます。XNAでアクティブな各ゲームパッドを繰り返し処理する方法

私はSignedInGamerSignedInGamerCollectionを見てきましたが、特定のGamePadへの参照はありません。

私は以下のスニペットのような何かをしたいが、私はそれらのそれぞれの入力を得ることができるように、それは現在のすべてのプレーヤーのためのループで使用することができるように修正したいです。 PlayerIndexは「二」、「三」、および「4」、「ワン」を持っています。

GamePadState gS = GamePad.GetState(Microsoft.Xna.Framework.PlayerIndex.One); 

答えて

2

あなたがGetStateを呼び出すと、状態の構造は、プロパティIsConnectedが含まれています。 falseの場合、コントローラは切断されます。私はあなたのコード内で共通のバグを修正する自由を撮影した

for (PlayerIndex i = PlayerIndex.One; i <= PlayerIndex.Four; i++) { 
    GamePadState state = GamePad.GetState(i); 
    if (state.IsConnected) { 
     // TODO: Process state 
    } 
} 
+2

:あなたはこのようなコードを使用して、すべてのアクティブコントローラの状態を反復処理することができます。あなたの条件に '<' *ない= < '使用するように注意してください'と*。後者を使用すると、第四のコントローラが動作しなくなります( - この問題はhttp://create.msdn.com/en-US/resources/help/peer_review_evil_checklistにリストされているし、あなたのゲームがピアレビューを失敗します)。 –

+0

は、補正のための感謝を@AndrewRussell!それは非常に一般的な間違いです。 :D – Athari

関連する問題