最終更新: xna_game_studio 2009年02月12日(木) 01:23:45履歴
とりあえずカーソルキーとZキー、Xキーくらいが使えればいいので簡単に。
1. KeyboardクラスでGetState()してKeyboardStateを取得
2. KeyboardStateのインデクサでKeys列挙体を要素番号としてstate[Keys.Z]で状態を取得
3. state[Keys.Z] == KeyState.DownならZキーが押されている
という流れらしい。
前回のHello World文字を表示するプログラムを、カーソルキーでHello Worldの文字を移動、ZキーとXキーが押されていたら背景色を変える、というふうに修正してみる。
http://www.microsoft.com/japan/msdn/vstudio/expres...
「キーボード入力」を参考にします。
- 1. Game1.csの23行目辺りにHello Worldの位置を管理するVector2 posOfHelloWorldメンバ変数を追加します。
Vector2 posOfHelloWorld = new Vector2(0, 0);
- 2. 79行目辺りにカーソルキーが押されている場合の処理を書きます。
KeyboardState ks = Keyboard.GetState(); if (ks[Keys.Left] == KeyState.Down && posOfHelloWorld.X > 0) posOfHelloWorld.X--; if (ks[Keys.Right] == KeyState.Down && posOfHelloWorld.X < 600) posOfHelloWorld.X++; if (ks[Keys.Up] == KeyState.Down && posOfHelloWorld.Y > 0) posOfHelloWorld.Y--; if (ks[Keys.Down] == KeyState.Down && posOfHelloWorld.Y < 400) posOfHelloWorld.Y++;左(Keys.Left)が押されている(KeyState.Down)&X座標が左端(0)より右にあるなら、Xを左(X--)へ。
右(Keys.Right)が押されている(KeyState.Down)&X座標が右端(600)より左にあるなら、Xを右(X++)へ。
上(Keys.Up)が押されている(KeyState.Down)&Y座標が上端(0)より下にあるなら、Yを上(Y--)へ。
下(Keys.Down)が押されている(KeyState.Down)&Y座標が下端(400)より上にあるなら、Yを下(Y++)へ。
- 3. 103行目辺りのHello Worldを描画する処理でnew Vector2(0, 300)としていた部分をposOfHelloWorldに変えます。
spriteBatch.DrawString(font, "Hello World", posOfHelloWorld, Color.White);
- 4. F5キーで実行。
カーソルキーを使ってHello Worldの文字を右下のほうまで持っていってみた。
- 1. Game1.csの24行目辺りに背景色を管理するColor bgColorメンバ変数を追加します。
Color bgColor = Color.Black;
- 2. 89行目辺りにカーソルキーが押されている場合の処理を書きます。
if (ks[Keys.Z] == KeyState.Down) bgColor = Color.Blue; if (ks[Keys.X] == KeyState.Down) bgColor = Color.Green;Zが押されていたら、bgColorをBlueにする。
Xが押されていたら、bgColorをGreenにする。
- 3. 103行目辺りの背景をクリアする処理でClear(Color.Red)としていた部分をbgColorに変えます。
graphics.GraphicsDevice.Clear(bgColor);
- 4. F5キーで実行。
Xキーを押して背景色を緑にしてみた。
コメントをかく