2012年5月16日水曜日

Unity: 3分で覚えるキーボード入力スクリプト

Unityのキー入力回りは、意外とごちゃごちゃしています。
さくっと使いたい人向けにまとめてみました。

キーが押されたか?

if (Input.GetKeyDown("a")) {
    // aが押された!(押され続けは検知されない)
}

if (Input.GetButtonDown("Fire1")) {
    // Fire1が押された!(押され続けは検知されない)
}
GetButtonDown("Fire1")で入力を受け付けるキーは、Edit > Project Settings > Inputメニューから開くInput Managerの中でマッピングされています。
Fire1はデフォルトで左のCTRLキーと、ジョイスティックのボタン0にマッピングされています。

キーが離されたか?

if (Input.GetKeyUp("a")) {
    // aが離された!
}

if (Input.GetButtonUp("Fire1")) {
    // Fire1が離された!
}

キーが押され続けているか?

if (Input.GetKey("a")) {
    // aが押され続けてる!(シューティングのAuto Fireなどに使う)
}

if (Input.GetButton("Fire1")) {
    // Fire1が押され続けてる!
}

GetKey〜系のキーコードには、アルファベットキー以外にも以下のものが使えるようです。
Normal keys: "a", "b", "c" ...
Number keys: "1", "2", "3", ...
Arrow keys: "up", "down", "left", "right"
Keypad keys: "[1]", "[2]", "[3]", "[+]", "[equals]"
Modifier keys: "right shift", "left shift", "right ctrl", "left ctrl", "right alt", "left alt", "right cmd", "left cmd"
Mouse Buttons: "mouse 0", "mouse 1", "mouse 2", ...
Joystick Buttons (from any joystick): "joystick button 0", "joystick button 1", "joystick button 2", ...
Joystick Buttons (from a specific joystick): "joystick 1 button 0", "joystick 1 button 1", "joystick 2 button 0", ...
Special keys: "backspace", "tab", "return", "escape", "space", "delete", "enter", "insert", "home", "end", "page up", "page down"
Function keys: "f1", "f2", "f3", ...

カーソルキーの「上」が押されたかチェックする場合は、以下のようになります。
if (Input.GetKeyDown("up")) {
    // 上が押された!
}

方向キーの入力をX軸、Y軸の量で取得

// 水平方向の入力量(-1〜1)
float horizontal = Input.GetAxis("Horizontal");

// 垂直方向の入力量(-1〜1)
float vertical = Input.GetAxis("Vertical");
GetAxis()で入力を受け付けるキーもInput Managerの中でマッピングされています。
方向キーはデフォルトで、w、a、s、dの各キーとカーソルキー、ジョイスティックにマッピングされています。

キーボードのようなデジタル入力デバイスで操作しても、押されている時間によってアナログ量を返します。

情報源


2 件のコメント:

  1. こんにちは、参考にさせてもらっています。shitt+leftarrowといったように、2つのキーを押したときに発動させることってできますか?

    返信削除
    返信
    1. ブログを書いている方とは違いますが
      if(Input.GetKey("shift")){
      if(Input.GetKey("left arrow"){
      }

      }
      という様にinputを条件にしたifの入れ子にするか

      if(Input.GetKey("")&&Input.GetKey("")){
      //処理
      }
      という形にする事でも実装出来ると思います。

      削除

Related Posts Plugin for WordPress, Blogger...