任意两个物体有碰撞的条件
①一定是互相设置了Collision Preset。
②至少有一个实体开启了simulate physics。
OnActorHit事件响应条件
①事件所对应的物体必须开启了Simulating Generates Hit Events。
②而另一个与之碰撞的实体则不是必须要开启。
③二者至少有一个开启来simulate physics。
(对于一个character角色很特别,即使character与被撞到的物体都没有开启了Simulating Generates HitEvents,被撞物体的OnActorHit事件也会执行)
OnActorOverlap事件响应条件
①两个发生重叠的实体都要保证开启了Generate Overlap Events。
②并且在其中任意一个碰撞预设(Collision Presets)里面对另一方设立了overlap。
(这里可能官方文档描述有些区别,大家可以试试)
OnActorHit与OnComponentHit
对于存在于编辑器场景的实体,添加的是OnActorHit
蓝图里面对每个组件添加碰撞都是OnComponentHit事件。
Component一般是Actor的子组件,Actor可以无限制的添加组件
下面是一些注意事项:
1.有一些Mesh不能进行物理模拟,有的可以模拟但是无法产生碰撞。注意下面的参数Collision Prims参数,如果为0,就是无法模拟物理或者无法产生碰撞。
2.还有一些Static Mesh可以开启,但是没有效果(比如例子程序中的Floor_400X400,即使开启也不会与任何物体碰撞,不知道是不是和参数Collision Prims参数有关)
3.有关character的复杂碰撞问题
发现对于拥有Mesh等多个Component的蓝图Actor,如果想触发其他实体的OnActorOverlap必须要使Mesh的Generate OverlapEvents开启。(当然碰撞预设里面也要设置)对于一个character角色很特别,如果想触发其他实体的OnActorCollision。即使character与被撞到的物体都没有开启了Simulating Generates HitEvents,被撞物体的OnActorHit事件也会执行
关于Physics Bodies的相关参数意义,可参考链接 Physics Bodies(中文翻译)—UE4官方文档