簡體   English   中英

Unity中簡單的FPS相機運動

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM