XNA標準では DirectInput に対応したコントローラでないと認識しない様だが、手元にある初代PSコントローラが見事に対応してなかったのでどうしたもんかと思いぐぐったら解決策見つけた。XBOX360 Controller Emulator を使うと360コントローラをエミュレートする事で使用できる様になる。
ToCA EDIT -> Download Manager -> Recent Projects -> XBOX360 Controller Emulator v3.0
ダウンロードして出てきた、
xbox360cemu.ini
xinput1_3.dll
の二つのファイルをXNAアプリケーションと同一ディレクトリに保存するだけでOK
標準ではゲームを起動した瞬間にビープ音が鳴る。そのへんの設定は xbox360cemu.ini で可能。
どのボタンがどのように認識されてるかを確認するには同梱されている XInputTest.exe を使用する。
ついでなのでコントローラで操作するプログラムの一部。プレステのコントローラの十字キーはサムスティックとして認識された。むー
GamePadState currentState = GamePad.GetState(PlayerIndex.One);
if (currentState.IsConnected)
{
if (currentState.ThumbSticks.Left.X == -1) ac_pos.X -= 4;
if (currentState.ThumbSticks.Left.X == 1) ac_pos.X += 4;
if (currentState.ThumbSticks.Left.Y == 1) ac_pos.Y -= 4;
if (currentState.ThumbSticks.Left.Y == -1) ac_pos.Y += 4;
if (currentState.Buttons.A == ButtonState.Pressed) hoge();
}
参考サイトですありがとうございます><
XNAで作成されたゲームでXbox360コントローラ以外のコントローラを使う方法 - Ξ[くしー] || xisaiの日記