【Unity】ラジコンのような動きをさせる

やりたいことはラジコンみたいな動き

上下のキーで前後ろ移動、左右のキーでPlayerを左右に回転させたい。
上下の移動はPlayerの向いている方角に対して前後させたい。

まずは前後させる

Playerが向いている方角に進ませる処理の書き方に悩んだ。
結局は下記のソースのようにした。

まず、TransformDirectionメソッドを用いてローカル座標をグローバル座標に置き換える。
Playerから見たz座標方向に進めればいいのでx軸、y軸の引数は0、z軸にだけ値をとるようにVector3をインスタンス化しています(22行目)。
次にグローバル座標に設定したspeedとdeleteTimeをかけてplayerのpositionに設定しました(23-25行目)。

左右回転

左右に回転させるにはRotateメソッドを使用。
y軸の引数に左右キーが押下された時に得られる1or-1の値にspeedとdeleteTimeをかけて引数として使用しました。

using UnityEngine;

public class PlayerMovement : MonoBehaviour
{
	public float speed = 6f;            
	public float rotateSpeed = 1f;

        Vector3 direction;

	void FixedUpdate ()
	{
		float h = Input.GetAxisRaw ("Horizontal");
		float v = Input.GetAxisRaw ("Vertical");
		Move (v);
		Turning (h);
	}

	// 上下キーが押されたら
	void Move (float v)
	{
		if(v != 0){
			direction = transform.TransformDirection(new Vector3(0.0f , 0.0f , v));
			direction *= speed;
			direction *= Time.deltaTime;
			transform.position += direction; 
		}
	}

	void Turning (float h)
	{
		if(h != 0){
			transform.Rotate(0 , 100 * Time.deltaTime * rotateSpeed * h , 0);
		}
	}
}