cameraVertical = Input.GetAxis("Camera Vertical") * turnSpeed * Time.deltaTime;
myCamera.transform.localRotation *= Quaternion.Euler(cameraVertical, 0, 0);
我正在团结一致地工作,我正在开发我的第一个 3D 游戏。在陷入困境之前,我开始进行轮换工作,并在这里得到了帮助。现在我正在努力将旋转限制在设定范围内。有谁知道这个脚本的好方法吗?我对轮换工作没有真正的经验,而且我尝试过的任何方法都不起作用。
我想不出任何可以进行轮换的方法,因此我无法尝试任何事情。
不确定你的标准到底是什么,但你可以彻底通过它Mathf.Clamp()来限制你输入的值。
var clampedValue = Mathf.Clamp(cameraVertical, Min, Max)
myCamera.transform.localRotation *= Quaternion.Euler(clampedValue , 0, 0);
直接钳位四元数有点棘手,但仍然可行。在我看来,最易读的方法是将其转换为欧拉并夹紧 xyz,然后转换回来。
Vector3 rotation = myCamera.transform.localRotation.eulerAngles;
// clamp this as shown above using Mathf.clamp
rotation.x = Mathf.Clamp(rotation.x, Min, Max);
myCamera.transform.localRotation = Quaternion.Euler(rotation.x, rotation.y, rotation .z);