オノデラの研究日記 in わんくま

思いついたネタを気ままに書いていくブログ

ホーム 連絡をする 同期する ( RSS 2.0 ) Login
投稿数  209  : 記事  5  : コメント  5961  : トラックバック  40

ニュース

プロフィール

  • ●おのでら
    宮城県在住
    主に業務向けソフトを製作

Twitter

ニュース

主なリンク

XNA 関連リンク

アイテム

ゲーマーカード

その他

記事カテゴリ

書庫

日記カテゴリ

● 今回のサンプル

 はい、今回はキーボードの入力です。ついでにスプライトも移動できるようにしています。操作は「↑↑↓↓←→←→BA」です。(BA は嘘です。orz)

 サンプルは前回のものを再利用します。

 キーボード入力サンプル


● フィールド

/// <summary>
/// スプライトの位置
/// </summary>
Vector2 pos = Vector2.Zero;

 スプライトを移動させるため、位置を記憶させるようにします。スクリーン座標なので X, Y を格納する Vector2 を使用します。


● 更新処理コード

/// <summary>
/// 描画以外のデータ更新等の処理を行うメソッド
/// </summary>
/// <param name="gameTime">このメソッドが呼ばれた時点でのゲーム時間</param>
protected override void Update(GameTime gameTime)
{
    // Xbox360 コントローラの BACK ボタンを押したときにゲームを終了させます
    if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
        this.Exit();

    // TODO: ここに更新処理を記述してください

    // キーボードの状態を取得
    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 コントローラーを使って移動させてみます。

投稿日時 : 2007年1月22日 23:18

コメント

# re: XNA : キーボード入力 2007/01/23 0:10 中博俊
↑↑↓↓LRLRBA

# re: XNA : キーボード入力 2007/01/23 8:42 オノデラ


> ↑↑↓↓LRLRBA
 パワーアップ

> ↑↑↓↓←→←→BA
 パワーアップと見せかけて自爆

# re: XNA : キーボード入力 2007/01/23 23:18 ダッチ
オノデラさん、こんにちは。
ダッチです。

↓R↑LYBXA(わかるかな?)
意味もなく毎回入力していたのを思い出しました。


# re: XNA : キーボード入力 2007/01/23 23:38 オノデラ
> Ⅱ
> ↓R↑LYBXA(わかるかな?)

 かなり有名なゲームだけど、うちはやっていないっす。orz

注) Ⅲ と Ⅱ の意味は違うので注意!

# QQjfXzABBVE 2022/04/19 10:19 johnansaz
http://imrdsoacha.gov.co/silvitra-120mg-qrms

Post Feedback

タイトル
名前
Url:
コメント