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);
}
}
如果你们中有人能帮助我,我将很高兴。
这将在世界空间中旋转,这可能会在某些角度上感觉不对,因为相机并不总是垂直向上。
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);
}
}