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

Mathf.Clamp行为异常:相机垂直旋转角度限制失效求助

相机垂直旋转角度限制失效的问题解决
  • 问题根源:你现在错误地对旋转增量做了Mathf.Clamp限制,而不是对相机最终的垂直角度进行约束。哪怕每次输入的增量都在范围内,多次累积后相机角度还是会超出-70°到70°的区间。
  • 修正思路:必须先计算出相机旋转后的最终垂直角度,再对这个最终值做范围限制,而不是限制输入的增量值。

修正后的代码示例:

// 计算本次旋转的增量值
float xIncrement = _joystick.Vertical * (_moveSpeed * Time.deltaTime);
// 将当前相机X轴角度转换为-180°到180°的范围,避免欧拉角360°循环的问题
float currentCamX = Mathf.DeltaAngle(0, myCamera.transform.eulerAngles.x);
// 计算新的X轴角度,并限制在设定的范围内
float newCamX = Mathf.Clamp(currentCamX - xIncrement, camMin, camMax);
// 赋值给相机,保持Y、Z轴角度不变
myCamera.transform.eulerAngles = new Vector3(newCamX, myCamera.transform.eulerAngles.y, myCamera.transform.eulerAngles.z);

补充说明:

  • 使用Mathf.DeltaAngle是为了处理欧拉角的循环问题,比如当相机X轴角度显示为350°时,实际等价于-10°,这样Clamp才能正确识别并限制角度。
  • 如果你能确保不会出现角度循环的场景,也可以直接使用myCamera.transform.eulerAngles.x,但转换后的方式兼容性更强。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 18:15:39