XNA メモ – キーを一度離すまで同じ入力を無効化する方法

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

今回は、他のメモでよく出てきたキーの押された瞬間を獲得する(押されたフレームのみtrueを得る)方法をメモります。

実装方法は、一つ前のフレームでの入力状態を保存し、確認の際には前のフレームで任意のキーが押されておらず、現在のフレームで押されている場合はtrueを返すようにします。これにより、押されたフレームのみtrueを得ることが出来、一度キーを話さない限りfalseを返すメソッドを実装します。

実装するにはまず、前のフレームのキー状態と、現在のキー状態を保存する変数を宣言します。

KeyboardState m_KeyState;     // 現在の状態
KeyboardState m_prevKeyState; // 前のフレームの状態

次に、Update()メソッドが呼ばれるたびにキーの状態を更新します。

m_prevKeyState = m_KeyState;
m_KeyState = Keyboard.GetState();

入力を確認するメソッドを実装します。内用は上で説明したのと同じで、前のフレームでは押されておらず、現在のフレームでは押されている状態のみ、trueを返します。

public bool IsPressed(Keys key)
{
return (m_KeyState.IsKeyDown(key) && m_prevKeyState.IsKeyUp(key));
}

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

if ( IsPressed( Keys.Escape ) )
{
   // ... 入力されたときの処理
}

以上です。

コメント
  1. […] XNA メモ – キーを一度離すまで同じ入力を無効化する方法 […]

コメントを残す

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

WordPress.com ロゴ

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

Twitter 画像

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

Facebook の写真

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

Google+ フォト

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

%s と連携中