📅  最后修改于: 2023-12-03 15:35:29.678000             🧑  作者: Mango
在 Unity FPS 游戏中,相机的 Z 轴旋转问题是一个经常遇到的问题。通常,在首人称射击游戏中,相机跟随玩家并旋转以在玩家移动时提供视角变化。但是,当相机移动时,其在 Z 轴上的旋转会导致奇怪的旋转效果,会干扰玩家视角,从而影响游戏体验。
这个问题的解决方案很简单,只需要在相机脚本中做出如下修改:
public class CameraScript : MonoBehaviour
{
public Transform player; // 玩家的 Transform 组件
public float sensitivity = 100f; // 相机旋转的灵敏度
public float rotationLimit = 80f; // 相机旋转的极限角度
float rotationX = 0f;
void FixedUpdate()
{
float mouseX = Input.GetAxis("Mouse X") * sensitivity * Time.fixedDeltaTime;
float mouseY = Input.GetAxis("Mouse Y") * sensitivity * Time.fixedDeltaTime;
rotationX -= mouseY;
rotationX = Mathf.Clamp(rotationX, -rotationLimit, rotationLimit);
transform.localRotation = Quaternion.Euler(rotationX, 0f, 0f);
player.Rotate(Vector3.up * mouseX);
// 将相机的 Z 轴旋转控制为 0
transform.localEulerAngles = new Vector3(transform.localEulerAngles.x, transform.localEulerAngles.y, 0);
}
}
在这个脚本中,我们将 transform.localEulerAngles.z
设为了 0,在每一帧中控制相机的 Z 轴旋转为 0。这个代码片段将确保相机不会在移动或旋转时出现任何奇怪的效果,提高玩家体验。
希望这个解决方案对您有所帮助。