Below you will find pages that utilize the taxonomy term “Programming”
Posts
How to do Smooth Camera Follow in UE4? | 如何在UE4中实现平滑的摄像机跟随
点击这里到微信公众号阅读本文
我们在玩3D的赛车游戏或者第三人称动作、射击游戏时,对跟在角色或控制的车辆后面的摄像机画面的平滑运动已经很熟悉了,那么,我们自己如何写代码做出类似的效果呢?
从算法的原理上分析,我们要做的其实只有两点:
在每一帧更新时取得要跟随的目标的位置向量(Position),假如目标不动,这就是我们想要把摄像机(最终)移动到的位置,然后通过计算插值得出实际在这一帧要把摄像机移动到的位置; 在每一帧更新时取得要跟随的目标的旋转向量(Rotation),假如目标不动,这就是我们想要摄像机(最终)看向的方向,然后通过计算插值得出实际在这一帧摄像机要看向的方向; 在 Unity 中,可以将类似下面的代码挂在摄像机上即可:
using System.Collections; using System.Collections.Generic; using UnityEngine; public class SmoothFollow : MonoBehaviour { public Transform target; //这个是要跟随的物体,比如RPG中的主角 或者 赛车游戏中的赛车 public float height = 3.5f; //这个是设置摄像机的高度 public float distance = 7; //这个是设置摄像机的距离 public float smoothSpeed = 1; //这个是平滑移动的速度 // Use this for initialization void Start () { } // Update is called once per frame void Update () { Vector3 targetForward = target.forward; targetForward.y = 0; //以x 和 z 所在平面进行旋转 Vector3 currentForward = transform.