一、使用物理施加力的方法使物体移动
方法含义:在局部坐标中朝着某个方向进行移动
AddActorLocalOffset(FVector 移动方向,bool bSweep,FHitResult HitResult)
bSweep:与碰撞有关,就算在场景中关闭StaticMesh物体的物理模拟属性,此值为true时,也会有碰撞效果。在此物体移动过程中碰到了其他物体,将阻止碰撞对向之间的相互穿透。
FHitResult:一个结构体,存储的是物体运动时被另一物体阻挡后的一些相关信息数值,比如:时间、距离、位置、命中点、法线等属性。
注意:第三个参数需要&传地址,相当于C#中的 ref 关键字。
代码:
三、是否发生碰撞与场景物体碰撞设置有关
如果阻挡的物体设置成忽略或者没有碰撞器的设置,移动物体可以直接穿透
如果是移动物体自身,对世界静态/动态物体碰撞设置成忽略,或者将自身的碰撞关闭,运行时就可以穿过阻碍物体。
世界物体的静态、动态判断,是根据你设置的是可移动还是静态
四、世界坐标偏移AddActorWorldOffset
方法含义:在世界坐标沿着某个方向进行移动
局部坐标及世界坐标的区别:
局部坐标以自身为中心,可以理解成自身就是一个坐标系,坐标系是随时跟着自身变动,以自身坐标系去添加向量,同一个向量在自身朝向不同时,向量方向也是不同的。
世界坐标是以世界为中心,坐标轴朝向是固定的,不会随着自身的变动而变化。设置的向量就是朝着一个方向。