オイラー角を使って、オブジェクトの方向を指定できるように、プログラムを作成してみましょう。
Rotate関数によって回転させるのではなく、キー操作によって、指定の角度に方向転換できる仕組みです。
Quaternion.Euler()を使用する
プレーヤーの向いている方向をわかりやすくするために、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 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class CubeMove : MonoBehaviour { void Update() { if(Input.GetKey("up")) { transform.rotation = Quaternion.Euler(0, 0, 0); } if(Input.GetKey("down")) { transform.rotation = Quaternion.Euler(0, 180, 0); } if(Input.GetKey("right")) { transform.rotation = Quaternion.Euler(0, 90, 0); } if(Input.GetKey("left")) { transform.rotation = Quaternion.Euler(0, 270, 0); } } } |
ゲームプレイして、十字キー操作してみましょう。
Quaternion.Euler()は、オイラー角で回転を指定できる関数。
Y軸の回転角度を、上下左右の各キーに設定すれば、押すたびに向きを指定することができます。
Rotate()では角度を加算し続けるため、このような方向転換はできません。