共计 718 个字符,预计需要花费 2 分钟才能阅读完成。
明天实现的内容:
问题产生的起因
在咱们的代码中,摄像机位移应用了 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;
正文完