Three.jsを使って、作ってみた

プログラミング関連の事を色々書いています(^^) 週末はレストランやコンビニのお菓子のことを書いています。

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」を選択すると一覧が表示されます。
f:id:gupuru:20140429193220p:plain

こんな感じに一覧が表示されます↓
f:id:gupuru:20140429193230p:plain



次に、マウスの入力を取得する方法を書きます。

マウスのボタンは、「左ボタン : 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);

実行結果
f:id:gupuru:20140429200619p:plain

「 Input.mousePosition.x」や「 Input.mousePosition.y」とすると、X座標、Y座標だけを取得できます。

  var x : int = Input.mousePosition.x;
  Debug.Log(x);


マウスとキーボードの取得は、こんな感じです。
これで、終わります。


参考サイト
ActionScript入門Wiki - Unity - 入力情報を取得する
Unityでゲーム開発 -JavaScriptでキー入力-