3. ユーザー入力

この文書ではユーザー入力について説明します。

ユーザー入力を検出する

表示したスプライトをコントローラで操作できるようにしてみましょう。

Sample/Tutorial/Sample03_01を開いてください。

Sample/Tutorial/Sample03_01/AppMain.cs

public static void Initialize ()
{
        graphics = new GraphicsContext();

        shaderProgram = new ShaderProgram("/Application/shaders/sprite.cgx");
        shaderProgram.SetUniformBinding(0, "u_WorldMatrix");

        ImageRect rectScreen = graphics.Screen.Rectangle;

        texture = new Texture2D("/Application/resources/Player.png", false);
        spritePlayer = new SimpleSprite(graphics, texture);
        spritePlayer.Position.X = rectScreen.Width/2.0f;
        spritePlayer.Position.Y = rectScreen.Height/2.0f;
        spritePlayer.Position.Z = 0.0f;

        unitScreenMatrix = new Matrix4(
                 2.0f/rectScreen.Width, 0.0f,   0.0f, 0.0f,
                 0.0f, -2.0f/rectScreen.Height, 0.0f, 0.0f,
                 0.0f,  0.0f, 1.0f, 0.0f,
                -1.0f, 1.0f, 0.0f, 1.0f
        );
}

前の章で定義したSimpleSpriteを使って、スプライトを表示しています。Spriteのコンストラクタには、GraphicsContextとTexture2Dのインスタンスへの参照を渡してください。SimpleSpriteのインスタンスを生成したら、Positionに値を代入し、座標を指定します。

コントローラの入力を検出する

コントローラの入力を検出するにはGamePad.GetData()を使います。 Update()の中で入力を検出します。

Sample/Tutorial/Sample03_01/AppMain.cs

public static void Update ()
{
        gamePadData = GamePad.GetData(0);

        int speed = 4;

        if((gamePadData.Buttons & GamePadButtons.Left) != 0)
        {
                spritePlayer.Position.X -= speed;
        }
        if((gamePadData.Buttons & GamePadButtons.Right) != 0)
        {
                spritePlayer.Position.X += speed;
        }
        if((gamePadData.Buttons & GamePadButtons.Up) != 0)
        {
                spritePlayer.Position.Y -= speed;
        }
        if((gamePadData.Buttons & GamePadButtons.Down) != 0)
        {
                spritePlayer.Position.Y += speed;
        }
}

GamePad.GetData(0)の引数はデバイス番号を指定しています。通常は0でよいでしょう。 各キー入力状態をif文で判定し、押されていればspritePlayer.Positionの値を変え、プレイヤー(飛行機の画像)の座標を更新します。

キーボードの割り当て

PCシミュレータで実行する場合、ゲームパッドのボタンはキーボードの各キーに割り当てられています。

ゲームパット上のキー シミュレータ上のキー割り当て
方向キーの左 カーソルキー:←
方向キーの上 カーソルキー:↑
方向キーの右 カーソルキー:→
方向キーの下 カーソルキー:↓
□ボタン Aキー
△ボタン Wキー
○ボタン Dキー
×ボタン Sキー
SELECT ボタン Zキー
START ボタン Xキー
L ボタン Qキー
R ボタン Eキー

詳しくは PlayStation(R)Mobileシミュレータについて をご覧ください。

ビルドして実行してみましょう。 方向キーでプレイヤーが操作可能になっています。

image/program_guide/user_input.jpg