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
相关产品推荐
相关产品推荐

