質問: unityでプレイヤーを作ってるのですがオブジェクトの向きに合わせて移動の仕方がわかりません 今のコードはこれです using System.Collections; using System.Collections.Generic; using UnityEngine; public class player2 : MonoBehaviour { public float speed; // Use this for initialization void Start () { speed += 1; } // Update is called once per frame void Update () { if (Input.GetKey(KeyCode.A)){ transform.Rotate(new Vector3(0, 0, -speed)); } if(Input.GetKey(KeyCode.D)){ transform.Rotate(new Vector3(0, 0, speed)); } } } 初心者なので細かく教えてくれるとありがたいです
回答: 追記 transform.foward : y軸をローカルでΘ度回転した時の正規ベクトルのローカル座標をかえす リファレンスにはワールド空間の Transform の青軸と書いてあるがこれは真っ赤なウソ。分かってないのがリファレンスを書くのはいい加減やめてほしい Θ度回転させた場合のローカル座標はzx平面-1 正規化されたベクトルのローカル座標を返す-2 この2点より (sinΘ,0,cosΘ)が得られるこれをx ローカル座標=ベクトル aはベクトル m(na)=(mn)aが成り立つので m(x)=mx が成り立つ 以上 ちなみにTime.delttimeをかけると値を1秒間隔でフレームごとにかかった時間で除算してくれます。 !![イメージ説明] ``` if (Input.GetKey(KeyCode.A)) { transform.Rotate(0,-50 * Time.deltaTime, 0); } if (Input.GetKey(KeyCode.D)) { transform.Rotate(0,50 * Time.deltaTime, 0, 0); } if (Input.GetKey(KeyCode.W)) { transform.position += transform.forward * Time.deltaTime; } if (Input.GetKey(KeyCode.S)) { transform.position += transform.forward * Time.deltaTime * -1; } ```