Unity 3d Follow camera

本文关键字:camera Follow 3d Unity | 更新日期: 2023-09-27 18:25:25

让这台相机在我的目标物体上完美工作,但有一点需要注意。似乎无法让角色上下打量。左右移动完美,上下完全不移动。"Mouse Y"部分我做错了什么?

    public GameObject target;
    public float rotateSpeed = 7;
    Vector3 offset;
    void Start() {
        offset = target.transform.position - transform.position;
    }
    void LateUpdate() {
        float horizontal = Input.GetAxis("Mouse X") * rotateSpeed * Time.deltaTime;
        float verticle = Input.GetAxis("Mouse Y") * rotateSpeed * Time.deltaTime;
        target.transform.Rotate(0, horizontal, 0);
        float desiredAngle = target.transform.eulerAngles.y;
        Quaternion rotation = Quaternion.Euler(0, desiredAngle, verticle);
        transform.position = target.transform.position - (rotation * offset);
        transform.LookAt(target.transform);
    }

Unity 3d Follow camera

您在Transform.Rotate调用中没有使用verticle(垂直?)。编辑:对不起,我刚找到第一个问题就不再看了,再往下看,还有一个问题与我在这个问题中解决的问题类似。"操作顺序"是错误的(见新评论):

public GameObject target;
public float rotateSpeed = 7;
Vector3 offset;
void Start() {
    offset = target.transform.position - transform.position;
}
void LateUpdate() {
    float horizontal = Input.GetAxis("Mouse X") * rotateSpeed * Time.deltaTime;
    float verticle = Input.GetAxis("Mouse Y") * rotateSpeed * Time.deltaTime;
    //You didn't use verticle before. Depending on your model/setup you might verticle as the 3rd (Z) parameter to get rotation in the right direction
    target.transform.Rotate(verticle, horizontal, 0);  //This line rotates the transform
    float desiredAngle = target.transform.eulerAngles.y;
    Quaternion rotation = Quaternion.Euler(0, desiredAngle, verticle);
    transform.position = target.transform.position - (rotation * offset);
    transform.LookAt(target.transform); //This sets the absolute rotation of the transform. This call will "override" the above call to Rotate
}

要提供更多信息,您必须解释您对该代码的最终目标是什么,因为仔细观察,我发现代码示例试图做的事情"很奇怪"。

最后一行代码(transform.Lookat)覆盖上一行代码。。。基本上说"不管发生什么,都要盯着目标看"。