この文書ではユーザー入力について説明します。
Contents
表示したスプライトをコントローラで操作できるようにしてみましょう。
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シミュレータについて をご覧ください。
ビルドして実行してみましょう。 方向キーでプレイヤーが操作可能になっています。