动作游戏相机计算插值跟随

📅 2026/7/2 19:26:20 👁️ 阅读次数 📝 编程学习
动作游戏相机计算插值跟随

我们在设计第三人称动作游戏时,会开发相机跟随功能,我们可以直接通过固定人物和相机的距离来每帧设置相机的位置,也就是直接将相机瞬移,也可以通过插值Vector3.Lerp(a, b, t)的方式使相机平滑移动,a代表当前位置,b代表目标位置,t代表移动速度,会根据设置的速度从a到b点平滑移动,这样不会让快速移动显得突兀,相机平滑移动只会移动距离,不会进行转向,那么就需要根据当前位置和目标位置再次设置相机的平滑转向,用Quaternion.LookRotation(dir):创建一个旋转四元数,使物体的 Z 轴对准这个方向,然后用Quaternion.Slerp(a,b,t)设置当前转向,目标四元数,转向速度

这样就可以让相机始终固定角度跟随了

详细代码

// 1. 计算目标位置(玩家后方偏上)
Vector3 targetPos = player.position + new Vector3(距离);

// 2. 平滑移动到目标位置
transform.position = Vector3.Lerp(transform.position, targetPos, speed * Time.deltaTime);

// 3. 计算看向玩家的旋转角度
Quaternion targetRotation = Quaternion.LookRotation(player.position - transform.position);

// 4. 平滑旋转到目标角度
transform.rotation = Quaternion.Slerp(transform.rotation, targetRotation, speed * Time.deltaTime);