碰撞
常见碰撞预设: BlockAll(阻挡所有,不管静态动态)BlockAllDynamic(阻挡所有动态)OverlapAll(重叠所有) NoCollision(无碰撞)。注意:NoCollision和Overlap视觉上是一致的,但不一样。
(所谓的物体静态动态即是它的可移动性,动态就是可移动)
碰撞的3种状态:BeginOverlap 、EndOverlap、Hit(2个刚体之间)。
注意overlap和hit要播放时有效果还需要勾选:
蓝图中对碰撞3种状态的调用:选中场景对象,选择碰撞事件。
节点说明:
overlaped actor 即是本体对象。other actor是碰撞到本体对象的碰撞体对象。
拆分hit数据引脚。Blocking Hit:是否产生hit碰撞。Location:碰撞体(非本体)的坐标。impact point:碰撞点坐标。
Hit actor和hit节点中的other actor相同。
节点测试:
overlap测试:进出cubemesh对象时候,触发beginoverlap和endoverlap,输出文本。(注意把 “生成overlap事件”勾选)。
进cubemesh对象时候,触发beginoverlap摧毁碰撞对象。(注意把 “生成overlap事件”勾选)。
Hit测试:碰撞对象是,输出文本“hit”,(注意把 “模拟生成hit事件”勾选)。
hit次数查看。可以看到接触时候会多次触发hit,故hit事件常常配合DoOnce来使用。
案例:
人物碰撞对象A,导致对象B(cube2)移动。缺点:只能触发一次。
改进:触发hit后延迟1s会重置DoOnce节点,使其可以再次被执行一次,以此类推。(序列节点的输出是有顺序的,只是时间间隔非常短。所以它是hit触发后1s重置,而不是等 Then 0输出后延迟1s重置 ,注意。)
蓝图类碰撞
蓝图类的碰撞并不在其场景中的细节面板中设置。下图对比普通对象 和 蓝图类对象的场景中细节面板的碰撞属性。
其碰撞设置面板:双击蓝图类,选择特定组件后,在蓝图类中的细节面板中。
在蓝图类中调用碰撞事件: