3.12 更新
我发现这个方法好蠢,ue是可以直接拿到旋转体的向前向量的。。。
但是ue弹簧臂确实问题不少,对相机要求高的建议自己写一个弹簧臂。
以下是原文
在写战斗中锁定敌人时的椭圆轨道时出现了一个小问题,大致是通过相机(Follow Camera)的向前向量来判断相机轨道时,发现当玩家开始移动时相机出现剧烈抖动的情况。在简单debug后发现问题出在弹簧臂上,应该是ue弹簧臂组件的bug,在角色开始移动时会抽风,导致相机的向前向量数值跳动,大概0.1s后恢复正常。由于觉得这个问题很怪,刚好也解决了,所以分享一下。
首先是正常的软件消抖,比如delay0.1s再判断改变,肯定不能用。因为会导致操作十分迟钝。
解决方法
ue的相机是由控制器控制的,所以相机的朝向肯定和控制器有对应关系。可以获取控制器的控制旋转,再通过计算把它转换成向量,下面是对应关系:
这样计算出的向量刚好是摄像机向前向量。
同时还要注意弹簧臂相关的问题,弹簧臂是相机消除抖动的重要组件,尽量通过改变弹簧臂的offset量来改变相机的位置,同时直接修改视角改变的逻辑,修改弹簧臂长度为0,然后将俯仰角调整写到相机位置调整里面。