● 今回のサンプル
はい、今回はキーボードの入力です。ついでにスプライトも移動できるようにしています。操作は「↑↑↓↓←→←→BA」です。(BA は嘘です。orz)
サンプルは前回のものを再利用します。
● フィールド
Vector2 pos = Vector2.Zero;
スプライトを移動させるため、位置を記憶させるようにします。スクリーン座標なので X, Y を格納する Vector2 を使用します。
● 更新処理コード
protected override void Update(GameTime gameTime)
{
if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
this.Exit();
KeyboardState state = Keyboard.GetState();
if (state.IsKeyDown(Keys.Left))
{
this.pos.X -= 8;
}
if (state.IsKeyDown(Keys.Right))
{
this.pos.X += 8;
}
if (state.IsKeyDown(Keys.Up))
{
this.pos.Y -= 8;
}
if (state.IsKeyDown(Keys.Down))
{
this.pos.Y += 8;
}
base.Update(gameTime);
}
● キーボードの状態取得
KeyboardState state = Keyboard.GetState();
Keyboard.GetState メソッドを使用すると、現在のキーボードのキーの押下状態を格納した KeyboardState 構造体を取得することが出来ます。あっさり1行で完了です。
● スプライトの移動
if (state.IsKeyDown(Keys.Left))
{
this.pos.X -= 8;
}
if (state.IsKeyDown(Keys.Right))
{
this.pos.X += 8;
}
if (state.IsKeyDown(Keys.Up))
{
this.pos.Y -= 8;
}
if (state.IsKeyDown(Keys.Down))
{
this.pos.Y += 8;
}
KeyboardState.IsKeyDown メソッドにキーコード(Keys 列挙)を指定すると、そのキーの押下状態を取得することが出来ます。もし押されていたら、スプライトの位置を移動させるように値を加減します。
● 指定位置への描画
this.sprite.Draw(this.texture, this.pos, Color.White);
SpriteBatch.Draw メソッドの第2引数にスプライトの描画位置を指定できるので、「this.pos」をそのまま渡してやります。これで指定位置への描画が完了です。
サンプルプロジェクト一式です。 今回からは Xbox360 のプロジェクトファイルも一緒に含めました。といっても今回のサンプルは Xbox360 にキーボードを付けられないとあまり意味はないと思いますが…。
次回は Xbox360 コントローラーを使って移動させてみます。