プレーヤーを十字キーで操作するには、いろいろなスクリプトがあります。
オブジェクトが押したキーの方向へ向いて、移動できるしくみを作ってみましょう。
前後左右の各キーで、プレーヤーが向きを変えて動いていきます。
関連記事:
進行方向へ回転するプレーヤー操作1
進行方向へ回転するプレーヤー操作2
キー操作で上下左右、前後の移動
簡単に十字キー操作できるスクリプト(transform.Translate)
簡単に十字キー操作できるスクリプト(transform.Rotate)
簡単に十字キー操作できるスクリプト(transform.position)
進行方向に傾きながら移動
進行方向にキャラクターの向きを変える(2D)
向きによってテキストを切り替える
押した方向へ向いて動くスクリプト
プレーヤーの向いている方向をわかりやすくするために、2個のオブジェクトを組合わせます。
CubeとCylinderを作成しましょう。
Cylinderの位置、サイズ、回転を変更します。
わかりやすいように、マテリアルカラーをつけました。
Cylinderをドラッグ&ドロップして、Cubeの子オブジェクトにします。
CubeMove.csを作成し、Cubeに追加します。
CubeMove.csを記述します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class CubeMove : MonoBehaviour { private float speed = 3.0f; void Update() { if(Input.GetKey("up")) { transform.rotation = Quaternion.Euler(0, 0, 0); transform.position += transform.forward * speed * Time.deltaTime; } if(Input.GetKey("down")) { transform.rotation = Quaternion.Euler(0, 180, 0); transform.position += transform.forward * speed * Time.deltaTime; } if(Input.GetKey("right")) { transform.rotation = Quaternion.Euler(0, 90, 0); transform.position += transform.forward * speed * Time.deltaTime; } if(Input.GetKey("left")) { transform.rotation = Quaternion.Euler(0, 270, 0); transform.position += transform.forward * speed * Time.deltaTime; } } } |
ゲームプレイしてみましょう。
Quaternion.Euler()は、オイラー角で回転を指定できる関数。
Y軸の回転角度を、上下左右の各キーに設定すれば、押すたびに向きを指定することができます。
この場合、Rotate()を使うと、角度を加算し続けるため、うまく動作しません。
関連記事:
進行方向へ回転するプレーヤー操作1
進行方向へ回転するプレーヤー操作2
キー操作で上下左右、前後の移動
簡単に十字キー操作できるスクリプト(transform.Translate)
簡単に十字キー操作できるスクリプト(transform.Rotate)
簡単に十字キー操作できるスクリプト(transform.position)
進行方向に傾きながら移動
進行方向にキャラクターの向きを変える(2D)
向きによってテキストを切り替える