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

Unity游戏项目俯视相机随玩家旋转问题求助

解决Unity俯视相机跟随玩家旋转的问题

你的问题核心是直接复用玩家的旋转会让相机失去俯视姿态——因为玩家的旋转包含俯仰(X轴)和转向(Y轴),而我们需要相机始终保持垂直向下的俯视角度,只同步玩家的左右转向。

直接修改你的脚本,处理旋转部分即可,以下是两种实现方式:

基础版本(即时同步)

public class FollowPlayer : MonoBehaviour
{
    public GameObject player;
    private Vector3 offset = new Vector3(0f, 24.953f, 0f);

    void LateUpdate()
    {
        // 保持相机位置与玩家的相对偏移
        transform.position = player.transform.position + offset;

        // 提取玩家的Y轴旋转(左右转向角度),固定相机X轴为90度实现俯视
        float playerYRot = player.transform.eulerAngles.y;
        transform.rotation = Quaternion.Euler(90f, playerYRot, 0f);
    }
}

平滑过渡版本(更自然的跟随效果)

如果希望旋转有过渡动画,避免生硬跳转,可以添加平滑插值:

public class FollowPlayer : MonoBehaviour
{
    public GameObject player;
    private Vector3 offset = new Vector3(0f, 24.953f, 0f);
    public float rotationSmoothSpeed = 4f; // 调整这个值控制平滑程度

    void LateUpdate()
    {
        transform.position = player.transform.position + offset;

        // 目标旋转:俯视角度 + 玩家的Y轴转向
        Quaternion targetRotation = Quaternion.Euler(90f, player.transform.eulerAngles.y, 0f);
        // 用Lerp实现旋转平滑过渡
        transform.rotation = Quaternion.Lerp(transform.rotation, targetRotation, rotationSmoothSpeed * Time.deltaTime);
    }
}

关键说明

  • 为什么不能直接做旋转加法:Unity中旋转是**四元数(Quaternion)**类型,不能直接做加法运算,必须通过欧拉角转换来修改指定轴的旋转。
  • 固定X轴为90度:确保相机始终垂直向下看向玩家,不会跟着玩家的俯仰动作(比如抬头低头)改变视角,保持纯俯视的2D游戏感受。
  • 同步Y轴旋转:让相机跟着玩家的左右转向同步旋转,保证玩家转向后,俯视视角始终对准玩家的前方区域。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 17:20:32