読者です 読者をやめる 読者になる 読者になる

謎言語使いの徒然

適当に気になった技術や言語を流すブログ。

入力系

日記 XNA

入力系はえらいシンプルだね。

XBOX360コントローラ

GamePad.GetState(prayer index) で指定プレイヤーのコントローラ状態引っ張ってこれる。とれてくるのが GamePadState で、Buttons とか Triggers とか。
Buttons.A とか呼ぶと、ButtonState.Pressed とか取れるので判定しれ。
Triggers の場合は、押しこみ具合が取得できる。値は入力なしで 0 最大押し込みで 1.0
スティック入力は ThumbStick でこれらは xy 座標系で取得できる。左下が -1 で右上が 1 と。方向パッドは DPad プロパティで拾う。内容はUp,Down,Left,Right、、、、まんまだな。

Keyboard

Keyboard.GetState() で拾ってくる。これも仕様はそんな変わんね。
IsKeyUp, IsKeyDown でも拾えるけど、まとめて拾うときは GetPressedKeys で押されてる Key 配列が返ってくる。

Mouse

なんかメモが不毛な気がしてきた。
Mouse.GetState() で取得。クライアント座標の x,y とLeftButton/RightButton が拾ってこれる。
@ScrollWheelValue プロパティで、回転方向に対する累積値が、、、、て、累積値!?差分とって解析か、、、、ダルス。

TouchPanel

Windows7/8 で作るなら対応したいよなーと思って調べた。未実験。
Microsoft.Xna.Framework.Input.Touch ライブラリを参照に加えてusingするといろいろ使える。

// タッチパネル利用判定
bool data = TouchPanel.GetCapabilities().IsConnected;

// タッチ状態の取得
TouchCollection touch = TouchPanel.GetState();
foreach (TouchLocation tl in touch )
{
    if ((tl.State == TouchLocationState.Pressed)
            || (tl.State == TouchLocationState.Moved))
    {

        // add sparkles based on the touch location
        sparkles.Add(new Sparkle(tl.Position.X,
                 tl.Position.Y, ttms));

    }
}