トップ 差分 一覧 ソース 検索 ヘルプ RSS ログイン

unity_move_mychar

自キャラを動かす(PC)


PCのみ。

参考:

http://docs-jp.unity3d.com/Documentation/Manual/Input.html

キーボード入力」のキー判定から判断してもよいですが、
FPSでよく使う[W][S][A][D]での前進、後退、左旋回、右旋回、などはあらかじめ設定されたInputManagerを経由させます。

 InputManager

メインメニューの「Edit」-「Project Setting」-「Input」で表示される「InputManager」を開きます。

すでに、[W][S]キーでの前進/後退はVerticalに、[A][D]キーでの左旋回/右旋回はHorizontalに登録されています。

 スクリプトでの入力値の取得


スクリプトではフレームごとに呼ばれる「FixedUpdate」関数で呼ぶようにします。
「Update」関数はアイドル時に呼ばれるため速度が安定しないためです。

「Input.GetAxis("Horizontal")」のように取得するとfloatの値が返ります。
-1.0〜+1.0の値が返り、[A][D]キーが押されるかジョイスティックが左右に動く場合に反応します。

void FixedUpdate () {
  float moveHorz = Input.GetAxis("Horizontal");
  float moveVert = Input.GetAxis("Vertical");
  if (moveHorz < 0.0f) {
     // 左旋回.
     if (Camera.main != null) Camera.main.transform.Rotate(0.0f, -1.0f, 0.0f);
  }
  if (moveHorz > 0.0f) {
     // 右旋回.
     if (Camera.main != null) Camera.main.transform.Rotate(0.0f, -1.0f, 0.0f);
  }
  if (moveVert > 0.0f) {
     // 前進.
     if (Camera.main != null) Camera.main.transform.Translate(0.0f, 0.0f, 0.01f);
  }
  if (moveVert < 0.0f) {
     // 後退.
     if (Camera.main != null) Camera.main.transform.Translate(0.0f, 0.0f, -0.01f);
  }
}

キー入力だけでなく、ジョイスティックのような微妙な傾きも検出できます。
また、

if (Input.GetButton("Jump")) {
   // ジャンプ.
}

でSpaceキーが押された場合の処理を記述できます。

キーの割り当てについては、InputManagerのInspectorウィンドウのPositive Button/Negative Buttonで変更可能です。


最終更新時間:2013年11月26日 20時38分37秒