ご覧いただきありがとうございます。
UnityとC#を使って、3Dゲームを作り始めた初心者です。
私は現在、
GetAxisのHorizontal,Verticalを用いた下記①のコードを使い、
オブジェクトを3D平面上で動かすことに成功しました。
また、下記②のコードで、そのオブジェクトの向きを水平回転させることにも成功しました。
今苦戦しているのは、オブジェクトを水平回転させて、
オブジェクトの向いている方向を基準として前後左右に動かしたいのですが、
私の現在のGetAxisを用いたコードだとx,z軸に平行な向きにしか動かせません。
オブジェクトが向いている方向を基準として前後左右に動かしたいです。
アドバイスをいただければ幸いです。
以下、現在のコードを記載いたします。
また、一番下に補足を書いています。
■■■①GetAxisを使ってオブジェクトを前後左右に動かすプログラム■■■
public class RigidBodyVelocity : MonoBehaviour { public float speed = 3f; float moveX = 0f; float moveZ = 0f; Rigidbody rb; void Start() { rb = GetComponent<Rigidbody>(); } void Update() { moveX = Input.GetAxis("Horizontal") * speed; moveZ = Input.GetAxis("Vertical") * speed; Vector3 direction = new Vector3(moveX, 0, moveZ); } private void FixedUpdate() { rb.velocity = new Vector3(moveX, rb.velocity.y, moveZ); } }
■■■オブジェクトを水平回転させるプログラム■■■
public class Cam_Yoko : MonoBehaviour { void Start() { } void Update() { if (Input.GetKey(KeyCode.R)) { transform.eulerAngles += new Vector3(0, 3, 0); } else if (Input.GetKey(KeyCode.W)) { transform.eulerAngles += new Vector3(0, -3, 0); } }
■■■補足■■■
Unity3Dでのオブジェクトの動かし方は、
transformを使う方法もあるようですが、
私が試したところ、壁などに接した場合に挙動がおかしくなるので
transformは使わない方向で考えたいです。
(壁にめり込む→元に戻る、を細かく繰り返してブルブル動きます)

回答1件
あなたの回答
tips
プレビュー