在unreal中如果一个component的relative location不是(0,0,0)的话,原地旋转这个component可能会导致游戏经过一段时间后这个component偏移原来的位置。比如螺旋桨可能会逐渐偏离原来的转轴。
解决这个问题可以在父级元素的mesh中添加socket,将子级物体attach到这个socket上,使其relative location为(0,0,0),这样在旋转过程中,这个component就永远不会偏离原来的相对位置。
目前解决一切运动便宜问题的办法就是将相对坐标置零,避免float计算带来的细小误差累积。除了socket方法,在子级component与父级component之间加一层component层级,用来定位子级物体的位置,而不旋转,使子级物体只负责旋转,相对坐标保持(0,0,0)状态也可解决此类问题,但不建议大量使用这个方法。因为在blueprint运动的过程中,unreal需要调用movementComponent命令,蓝图中包含的元素越多需要的movement操作数越多,对性能会带来一定影响。