ベスパリブ

プログラミングを主とした日記・備忘録です。ベスパ持ってないです。

進行方向に身体を向かせて歩かせる

[Unity][Quaternion][LookRotation]

void Update () {
//Walk
if(Input.GetButton("Horizontal") || Input.GetButton("Vertical")){
transform.Translate(Vector3.forward * Time.deltaTime * speed * 1 ); //正面
}

//Direction of Caracter's face
if(Input.GetButton("Horizontal") || Input.GetButton("Vertical")){
transform.rotation = Quaternion.LookRotation(transform.position + 
(Vector3.right * Input.GetAxisRaw("Horizontal")) + 
(Vector3.forward * Input.GetAxisRaw("Vertical")) 
- transform.position);
}
}

ミソはQuaternion.LookRotation
これでキャラクターの身体の向きを指定している。
Quaternion.LookRotation(向きたい方向 - 現在のポジション)で、キャラクターの向きを指定している。
ここを参照。わかりやすいスクリプト例が記載されています。
似たようなのでtransform.LookAt(target)もある。