我試圖讓我的角色改變它的旋轉到相機的旋轉,所以如果我的相機看著不同的方向,它應該讓我的角色在那個方向移動以改變我的角色的方向,然后當我點擊時我的角色移動到那個方向“W”。我該如何解決?(角色應該與相機旋轉相同,以便它可以在那個方向移動。)
我的角色移動腳本:
public Rigidbody rb;
public float moveSpeed;
public Transform Cam;
public Transform target;
void Start()
{
}
void Update()
{
target.rotation = Cam.rotation;
if (Input.GetKey(KeyCode.W))
{
rb.velocity = Vector3.forward * moveSpeed;
}
if (Input.GetKey(KeyCode.S))
{
rb.velocity = Vector3.back * moveSpeed;
}
if (Input.GetKeyDown(KeyCode.Space))
{
rb.velocity = Vector3.up * moveSpeed;
}
if (Input.GetKey(KeyCode.A))
{
rb.velocity = Vector3.left * moveSpeed;
}
if (Input.GetKey(KeyCode.D))
{
rb.velocity = Vector3.right * moveSpeed;
}
if(Input.GetKey(KeyCode.LeftShift))
{
moveSpeed = 8f;
}
if(Input.GetKey(KeyCode.LeftControl))
{
moveSpeed = 3f;
}
}
}
我的相機跟隨腳本:
public float rotateSpeed;
private float moveX;
public Transform target;
public Vector3 offset;
private float moveY;
public Transform Cam;
void Start()
{
}
void Update()
{
transform.position = target.position offset;
moveX = Input.GetAxis("Mouse X");
moveY = Input.GetAxis("Mouse Y");
transform.Rotate(0f, moveX * rotateSpeed * Time.deltaTime, 0f);
target.rotation = Cam.rotation;
}
}
uj5u.com熱心網友回復:
目前您正在使用 Vector3 屬性設定剛體速度,這將回傳一個相對于世界坐標的向量。您需要設定相對于角色旋轉的速度,您可以通過更改
rb.velocity = Vector3.forward * moveSpeed;
在你的角色運動中
rb.velocity = target.transform.forward * moveSpeed;
等等。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/344697.html
上一篇:如何在不使用PhotonViewId的情況下生成/實體化多個游戲物件?
下一篇:行程間通信
