让这款相机在我的目标物体上完美工作,但有一点需要注意。似乎无法让角色上下查看。左右移动完美,上下根本不动。我在
"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);
}
您没有在
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
}
要提供更多信息,您必须解释此代码的最终目标,因为仔细观察,我发现代码示例尝试执行的操作存在“奇怪之处”。
最后一行代码 (transform.Lookat) 覆盖了前面的代码...基本上是说“无论发生什么情况,始终查看目标”。