unity游戏引擎- 3d鼠标瞄准相机第三人称垂直c#

本文关键字:第三人 相机 垂直 引擎 游戏 3d 鼠标 unity | 更新日期: 2023-09-27 17:54:21

我试图使鼠标瞄准相机旋转我的球员水平和垂直,看球员和保持恒定的距离。在那个版本中,它工作得很好,但我也不能使它水平。每个版本的镜头都是静止的,我也会旋转我的玩家。我是新的编程,所以我这可能是很容易的任务与适当的目标。转换。eulerangle .y分配也垂直,但我不能这样做。

public class MouseAimCamera : MonoBehaviour {
    public GameObject target;
    public float rotateSpeed = 5;
    Vector3 offset;
    void Start() {
        offset = target.transform.position - transform.position;
    }
    void LateUpdate() {
        float horizontal = Input.GetAxis("Mouse X") * rotateSpeed;
        target.transform.Rotate(0, horizontal, 0);
        float desiredAngle = target.transform.eulerAngles.y;
        Quaternion rotation = Quaternion.Euler(0, desiredAngle, 0);
        transform.position = target.transform.position - (rotation * offset);
        transform.LookAt(target.transform);
    }
}

如果你们中有人能帮助我,我将很高兴。

unity游戏引擎- 3d鼠标瞄准相机第三人称垂直c#

这将在世界空间中旋转,这可能会在某些角度上感觉不对,因为相机并不总是垂直向上。

public class MouseAimCamera : MonoBehaviour {
    public GameObject target;
    public float rotateSpeed = 5;
    void Start() {
        transform.parent = target.transform;
        transform.LookAt(target.transform);
    }
    void LateUpdate() {
        float horizontal = Input.GetAxis("Mouse X") * rotateSpeed;
        float vertical = Input.GetAxis("Mouse Y") * rotateSpeed;
        target.transform.RotateAround(target.transform.position, Vector3.up, horizontal);
        target.transform.RotateAround(target.transform.position, Vector3.left, vertical);
    }
}

这将在本地空间中旋转,并且可能会根据您要构建的内容感觉更自然。这是接近你原来的解决方案,所以我猜这不是你想要的。

public class MouseAimCamera : MonoBehaviour {
    public GameObject target;
    public float rotateSpeed = 5;
    void Start() {
        transform.parent = target.transform;
        transform.LookAt(target.transform);
    }
    void LateUpdate() {
        float horizontal = Input.GetAxis("Mouse X") * rotateSpeed;
        float vertical = Input.GetAxis("Mouse Y") * rotateSpeed;
        target.transform.Rotate(vertical, horizontal, 0);
    }
}