物体碰撞规则
碰撞概述
关于碰撞的处理方式,需要记住几点规则:
1. 阻挡会设置为阻挡的两个(或更多)Actor之间自然发生。但是,需要启用 模拟生成命中事件(Simulation Generates Hit Events) 才能执行 事件命中,该功能在蓝图、可破坏物Actor、触发器等处使用。
2. 将Actor设置为 重叠 往往看起来它们彼此 忽略,如果没有 生成重叠事件(Generate Overlap Events),则二者基本相同。
3. 对于彼此阻挡的两个或更多模拟对象,它们都需要设置为阻挡相应的对象类型。
4. 对于两个或更多模拟对象:如果一个设置为重叠对象,另一个设置为阻挡对象,则发生重叠,而不会发生阻挡。
5. 即使一个对象会 阻挡 另一个对象,也 可以 生成重叠事件,尤其是高速运行的对象。
6. 不建议一个对象同时拥有碰撞和重叠事件。虽然可以,但需要手动处理的部分太多。
7. 如果一个对象设置为忽略,另一个设置为重叠,则不会触发重叠事件。
对于测试关卡和检视场景目的:
(1)默认的 在编辑器中运行 摄像机是一个Pawn。因此可以被设置为阻挡Pawn的任何对象阻挡。
(2)在编辑器中模拟 摄像机在处理任何事务之前不是Pawn。它可以自由穿过任何对象,不会造成任何碰撞或重叠事件。
碰撞和模拟生成命中事件
通过将球体设置为 模拟生成命中事件(Simulation Generates Hit Events),球体就会告诉自己发生了碰撞。它会触发球体蓝图中的事件,例如 ReceiveHit 或 OnComponentHit。
报告刚性碰撞的对象将汇报所有报告,包括它们坐在某个对象上时的垃圾报告,所以最好在蓝图或代码中仔细过滤碰撞的对象
重叠和忽略
如果禁用了 生成重叠事件(Generate Overlap Events),则不管目的为何,重叠 和 忽略 的效果完全相同。在此情况下,球体设置为重叠或忽略箱体:
重叠和生成重叠事件
与可以随时触发的碰撞不同,重叠事件是 ReceiveBeginOverlap 和 ReceiveEndOverlap,仅在特定情况下触发。
为了使重叠发生,两个Actor都需要启用 生成重叠事件(Generate Overlap Events)。这是为效果考虑。如果球体和箱体都希望在我们移动球体或箱体时发生重叠,则执行重叠查询以确认是否需要触发任何事件。
如果箱体不希望在移动时发生重叠,则不执行重叠查询。但现在,可以与球体重叠,因此球体需要tick事件,并逐帧检查是否有重叠以防有对象与它们相撞。
版权声明:本文为CSDN博主「邓显贤」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/UE4Learner/article/details/123041111