Unity3D行走相机跟随优化:如何固定X轴避免横向偏移?
Unity3D 相机固定横向轴仅跟随前后移动解决方案
问题根源
你当前的实现将相机直接设置为玩家物体的子节点,玩家的所有位移、旋转变换都会完全同步到相机上,因此玩家横向转向、左右移动时,相机会同步产生横向偏移与旋转,不符合你的预期。
修复方案
不要将相机绑定为玩家的子物体,在LateUpdate生命周期中手动控制相机位置,仅同步玩家的前进后退轴(通常为Z轴),固定X轴位置与Y轴高度:
// 挂载到玩家物体上的脚本代码 // 可在Inspector面板调整的参数 public float cameraFixedHeight = 8f; public float cameraBackOffset = 10f; public float cameraPitchAngle = 40f; // 可选:如果需要相机X轴跟随玩家初始X位置固定,而非世界坐标0点,记录初始X值 private float playerInitX; private void Start() { playerInitX = transform.position.x; // 初始化相机角度 Camera.main.transform.rotation = Quaternion.Euler(cameraPitchAngle, 0f, 0f); } private void LateUpdate() { // 仅同步玩家Z轴位置,X轴固定、Y轴固定高度 Vector3 cameraTargetPos = new Vector3( playerInitX, // 要固定世界坐标X为0直接替换为0即可 cameraFixedHeight, transform.position.z - cameraBackOffset ); Camera.main.transform.position = cameraTargetPos; }
注意事项
- 使用
LateUpdate执行相机跟随是Unity的标准最佳实践,确保所有玩家移动逻辑执行完毕后再更新相机位置,避免画面抖动 - 如果你需要保留相机跟随玩家左右移动的能力,仅不跟随玩家横向旋转,修改代码逻辑,保持相机和玩家的相对X、Z偏移,固定旋转即可
内容的提问来源于stack exchange,提问作者Natan Fernandes
相关产品推荐
相关产品推荐

