明天实现的内容:
问题产生的起因
在咱们的代码中,摄像机位移应用了SmoothDamp,然而旋转却是间接欧拉角赋值,这导致了摄影机地位还没有调整完,旋转就曾经到位了。设想一下这个过程,摄像机的眼帘核心在旋转时会偏移角色颈椎地位,这就产生了抖动。

        // 摄像机游戏对象的挪动和旋转        cameraGO.transform.eulerAngles = this.transform.eulerAngles;

通过齐全固定摄像机每帧的指向解决问题
通过应用LookAt,在每一帧将摄像机指向到cameraHandle的transform,咱们就能解决问题,这是最简略的方法。

        // 摄像机游戏对象的挪动和旋转        cameraGO.transform.LookAt(cameraHandle.transform);

可能呈现的使用RootMotion动画晃动问题
当咱们使用上述解决方案当前,可能会呈现使用了RootMotion的动画播放时呈现晃动的问题,这个问题可能来自两处。
1.Animator的动画更新速率问题,咱们的动画机是能够抉择何种更新模式的,normal意味着和Update一起更新,依据状况咱们抉择Animator Physics。

2.该游戏动画Root Motion的信号问题,Root Motion可能会有杂波,咱们能够用一些伎俩平滑掉。以下计划将上一帧的信号与以后帧的信号相加再除以2。

        // 更新m_deltaPos为动画机的Root Motion 之所以用累加是因为物理帧和动画帧不一样 在物理帧的最初会将m_deltaPos清零        // 加上上一帧的再除以2.0是为了平滑        m_deltaPos += (m_deltaPos + (Vector3)_deltaPos) / 2.0f;