トップ 一覧 検索 ヘルプ RSS ログイン

unity_move_mycharの変更点

  • 追加された行はこのように表示されます。
  • 削除された行はこのように表示されます。
!!!自キャラを動かす(PC)

PCのみ。

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

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

!!InputManager
メインメニューの「Edit」-「Project Setting」-「Input」で表示される「InputManager」を開きます。
{{ref_image unity_player_move_01.png}}
すでに、[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で変更可能です。

----
{{lastmodified}}