UE的碰撞和Unity的碰撞类似。每个碰撞体都可以选择 Object Type,这个Object Type实质上就是一个帮助我们分类的标签,并不会产生实际的作用,我们甚至可以在项目设置里面自己创建,两个Object Type之间,分为物体碰撞检测的 Object Response 和射线追踪检测的 Trace Response 两种Response类型,分为 Ignore、Overlap 和 Block 三种Response情况,后两者可以相应的产生 Overlap事件 和 Hit事件,类似Unity的Trigger和Collision。
Object Response | 描述 |
---|---|
Ignore | 忽略碰撞检测,可以重叠,与Overlap相比没有Overlap事件发生。 |
Overlap | 可以重叠,类似Unity的Trigger,若要触发 ReceiveBeginOverlap 和 ReceiveEndOverlap 事件,需要勾选 Generate Overlap Events。 |
Block | 不能重叠,并非只有开启 Simulate Physics 才能发生触发 ReceiveHit 或 OnComponentHit 事件,只要满足条件,都可以触发Hit事件,但是如果该物体开启了物理模拟,则该物体必须勾选 Simulation Generates Hit Events 才能在该物体上触发Hit事件,此选项仅与此物体触发Hit事件有关。 |
Trace Response | 描述 |
---|---|
Visibility | 这个通道一般是咱们手动进行射线追踪的通道,一般不会Ignore。 |
Camera | 这个通道是世界上的摄像机进行射线追踪的通道,有时候一些物体会造成摄像机视野上出现毛病,这时候把该物体的该通道关闭,就不会让该物体影响摄像机的视野。 |
两个物体间Response的情况:
- 两者必须都为Block Response,才能发生Block
- 只要一者为Ignore Response,则只能发生Ignore
- 只要一者为Overlap Response,则只能发生Overlap
Collision Enabled 是控制碰撞检测的总开关,有点像Unity的Is trigger,总共有四个选项,官方文档写的非常详细了,我说一下比较常用的理解方法,Query 决定能否被射线追踪检测到,能否发生Overlap;Physic 决定能否发生Block。