[英]Simple FPS camera movement in Unity
我開始了一個新項目。 這是一個簡單的FPS游戲。 教程經常過時,所以我開始自己寫。
玩家的動作很好。 相機不是。 我將所有數據值存儲在數據類中
public class CameraMovementData : CameraCommonData // datastore
{
public float InputHorizontal { get { return Input.GetAxisRaw("Mouse X"); } } // horizontal mouse input
private float yMin = -70; // player looks down - minimum
private float yMax = 70; // player looks up - maximum
public float InputVertical { get { return Mathf.Clamp(Input.GetAxisRaw("Mouse Y"), yMin, yMax); } } // vertical clamped mouse Input
public float Sensitivity { get { return 30; } } // mouse sensitivity
public Vector2 Movement { get { return new Vector3(InputHorizontal * Sensitivity * Time.deltaTime, -InputVertical * Sensitivity * Time.deltaTime); } } // the movement direction of the camera
}
在我的控制器中,我有:
public class CameraMovementController : CameraCommonController // use the values from the datastore
{
private CameraMovementData data; // instance to the datastore
private void Start()
{
data = new CameraMovementData();
}
private void Update()
{
data.PlayerTransform.localRotation = data.Movement.x; // Rotate the player on X
data.CameraTransform.localRotation = data.Movement.y; // Rotate the camera on Y
}
}
如您所見,我不知道如何在Update方法中編寫旋轉。
我必須使用localRotation對嗎?
為了使它起作用,我必須分配給它什么?
看來我要用
Quaternion.AngleAxis();
但我不知道要傳入什么作為第二個參數
您通常需要將Camera附加到Player對象,這樣就不必顯式檢索有關玩家旋轉的數據。 話雖這么說,如果Camera是Player對象的子代,那么當Player旋轉時,Camera也會旋轉。 之后,您要做的就是將旋轉固定在X軸上,這樣它就不會翻轉。 我希望這可以解決您可能遇到的一些問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.