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);
}
您在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)覆盖上一行代码。。。基本上说"不管发生什么,都要盯着目标看"。