XNAメモ – コントローラーが抜けた事を判定する方法

Posted: 2012年8月12日 カテゴリー: プログラミングメモ, XNA, XNAメモ
タグ:, , ,

今回は、コントローラーが抜けた事を察知する処理をメモります。

 

何故コントローラーが抜けた事をプログラム的に実装する必要があるかと言うと、抜けた時にゲームをポーズしたり、何らかの処理を行いたい時の為です。

 

では実装に入ります。行う事は、前のフレームにコントローラーが繋がれていて、現在のフレームでは繋がれていないかの確認だけなのです。

 

まずは必要な変数を宣言します。

GamePadState[] m_PadState = new GamePadState[4];
GamePadState[] m_OldPadStates = new GamePadState[4];

 

次に、コントローラーの状態を毎フレーム更新します。

 

protected override void Update(GameTime gameTime)
for (int i = 0; i < 4; i++)
{
m_OldPadStates[i] = m_PadState[i];
m_PadState[i] = GamePad.GetState((PlayerIndex)i);
}
}

 

次に、コントローラーが切断されたかを確認するメソッドを実装します。

 

public bool WasDisconnected(PlayerIndex index)
{
return ( !m_PadState[(int)index].IsConnected && m_OldPadStates[(int)index].IsConnected );
}

 

後は、実装したメソッドを呼び出すだけです。

 

if (WasDisconnected(PlayerIndex.One))
{
// ゲームをポーズする・・・?
}

 

今回は以上です。

本来ならばこの処理はイベント型にした方がいい気がしますが、それはまたの機会と言うことにしておきます(その機会が来ない気もしますが・・・)。

 

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中