Unity ユーザー入力を取得する
今回は、Unityの「ユーザー入力を取得する」方法を書きます。
キーボードのWキーが押されたら、オブジェクトを移動させるということがあると思います。
今回は、そのようなキーボードやマウスなどの入力情報を取得する方法をメインに書きます。
キーボードから書いていきます。
まず、「キーが押されたか?」,「キーが離されたか?」,「押され続けているか?」を取得方法を書きます。
- 「キーが押されたか?」
if (Input.GetKeyDown("a")) { Debug.Log("aが押された!"); }
- 「キーが離されたか?」
if (Input.GetKeyUp("a")) { Debug.Log("aが離れた!"); }
- 「押され続けているか?」
if (Input.GetKey("a")) { Debug.Log("aが押されている!"); }
「"a"」はキーボードの「a」キーのことです。「b」キーなら、「Input.GetKey("b")」とすれば、取得できます。
上のコードのように「aが押されたら・・・」,「矢印キーの上が押されたら・・・」とひとつひとつ書いてもいいですが、Unityでは、もっと簡単に書ける方法があります。
横キー関連は「GetAxis("Horizontal")」で取得できます。
これで、矢印キーの「左」と「右」そして、「A」と「D」などが取得できます。(他にジョイスティックなども)
こんな感じに書けば、okです↓↓
var x : float = Input.GetAxis("Horizontal"); //-1〜1の値が返ってきます。
で、縦キー関連は「GetAxis("Vertical")」で取得できます。
矢印キーの「上」と「下」そして、「W」と「S」などが取得できます。
こんな感じに書けば、okです↓↓
var y : float = Input.GetAxis("Vertical"); //-1〜1の値が返ってきます。
で、上のコードを使い、上下左右にオブジェクトを動かせるようなコードを書きます。
var x : float = Input.GetAxis("Horizontal"); var y : float = Input.GetAxis("Vertical"); transform.Translate(x * 0.2, 0, y * 0.2); if (Input.GetKey("space")) { transform.position.y += 0.1; } if (Input.GetKey("left shift")) { transform.position.y -= 0.1; }
こんな感じに書くと、上下左右にオブジェクトを動かせます。
「GetAxis("Horizontal")」や「GetAxis("Vertical")」以外にも、「Input.GetButtonUp("Jump")」なんかもあります。
この辺は、「Edit」→「Project Setting」→「Input」を選択すると一覧が表示されます。
こんな感じに一覧が表示されます↓
次に、マウスの入力を取得する方法を書きます。
マウスのボタンは、「左ボタン : 0」,「右ボタン : 1」,「中ボタン : 2」となっています。
まず、「マウスが押されたか?」,「マウスが離されたか?」,「押され続けているか?」を取得方法を書きます。
- 「押され続けているか?」
if (Input.GetMouseButton(0)){ Debug.Log("左クリックが押されている!"); }
- 「マウスが押されたか?」
if (Input.GetMouseButtonDown(0)){ Debug.Log("左クリックが押された!"); }
- 「マウスが離されたか?」
if (Input.GetMouseButtonUp(0)){ Debug.Log("左クリックが離れた!"); }
マウスの位置は「Input.mousePosition」を使います。
こんな感じに使います。
Debug.Log(Input.mousePosition);
実行結果
「 Input.mousePosition.x」や「 Input.mousePosition.y」とすると、X座標、Y座標だけを取得できます。
var x : int = Input.mousePosition.x; Debug.Log(x);
マウスとキーボードの取得は、こんな感じです。
これで、終わります。
参考サイト
ActionScript入門Wiki - Unity - 入力情報を取得する
Unityでゲーム開発 -JavaScriptでキー入力-