You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity第一人称游戏相机旋转脚本添加Clamping功能求助

Unity 3D第一人称相机垂直旋转范围限制方案

直接通过四元数累乘的方式做旋转范围限制并不直观,因为四元数的分量无法直接对应欧拉角数值,容易出现计算误差或万向锁问题。正确的做法是用单独变量记录垂直旋转角度,先完成范围限制再转换为四元数应用到相机上:

  • 先定义存储当前垂直角度的变量和旋转范围常量:
    private float _verticalRotation = 0f;
    // 可根据需求调整上下限角度,示例为上下60度
    private const float MinVerticalAngle = -60f;
    private const float MaxVerticalAngle = 60f;
    
  • 替换原旋转逻辑为以下代码:
    float cameraVertical = Input.GetAxis("Camera Vertical") * turnSpeed * Time.deltaTime;
    // 更新当前垂直旋转角度
    _verticalRotation += cameraVertical;
    // 限制旋转角度在设定范围内
    _verticalRotation = Mathf.Clamp(_verticalRotation, MinVerticalAngle, MaxVerticalAngle);
    // 将角度转换为四元数赋值给相机
    myCamera.transform.localRotation = Quaternion.Euler(_verticalRotation, 0, 0);
    

这种方式通过单独维护欧拉角变量,避免了直接操作四元数带来的解析问题,是第一人称相机旋转限制的标准实现方式,你可以根据游戏需求修改MinVerticalAngle和MaxVerticalAngle的数值。

内容的提问来源于stack exchange,提问作者mushroomKnight

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 10:52:35