E4自带第一人称射击模板中的射击在玩家移速较慢的情况下没有明显问题,但如果玩家在高速移动时候(例如骑摩托车或者开车),就会发现子弹的速度很奇怪,没有考虑到玩家本身的移动速度,因此本身也是不符合物理规律的。
解决方法:
需要从两处着手,首先修改Projectile蓝图,设置两个变量,一个是Vector3的Intial Direction,表示考虑了玩家移动速度后的子弹初始方向,一个是float的InitSpeed,表示考虑了玩家移动速度后的子弹初始速度。并且把这两个变量都设置为Expose On Spawn,表示在动态生成这个物体时就能够设置他们。
然后在Construction脚本中把这两个值分别给Projectile组件的Intial Speed和 Velocity。
然后就是在武器蓝图中,生成子弹之前要把子弹的预设初始速度(向量)和玩家本身的移动速度(向量)加成起来,这样形成最后的向量才是子弹真正的初始移动速度向量。之后需要把子弹的初始方向从世界坐标转换到枪械的局部坐标,因为Projectile的Velocity是局部坐标。