Unity 3d 跟随相机

问题描述 投票:0回答:2

让这款相机在我的目标物体上完美工作,但有一点需要注意。似乎无法让角色上下查看。左右移动完美,上下根本不动。我在

"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);
}
c# unity-game-engine
2个回答
2
投票

您没有在

verticle
通话中使用
Transform.Rotate
(垂直?)。 编辑:抱歉,我一看到第一个问题就停止寻找,进一步查看还有另一个问题与我在这个问题中解决的问题类似。 “操作顺序”错误(见新评论):

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
}

要提供更多信息,您必须解释此代码的最终目标,因为仔细观察,我发现代码示例尝试执行的操作存在“奇怪之处”。


0
投票

最后一行代码 (transform.Lookat) 覆盖了前面的代码...基本上是说“无论发生什么情况,始终查看目标”。

© www.soinside.com 2019 - 2024. All rights reserved.