「IsPressed」タグのついた投稿

今回は、他のメモでよく出てきたキーの押された瞬間を獲得する(押されたフレームのみ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 ) )
{
   // ... 入力されたときの処理
}

以上です。