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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 21:39:04