在Unreal中,球体组件与地板或墙壁碰撞时可以同时生成Hit和BeginOverlap事件吗?

问题描述 投票:0回答:1

假设我的虚幻引擎项目中有一个滚动球。我想检测球何时接触地板以及何时不接触地板(就像我可以在 Unity 中使用 OnCollisionEnter 和 OnCollisionExit 所做的那样)。

要在虚幻中做到这一点,我是否需要 2 个球体组件,一个与地板碰撞将触发 OnComponentHit 事件,另一个稍大一点将与地板重叠并触发 OnComponentOverlapEvent?或者我可以使用单个球体组件来与地板碰撞并同时触发这两个事件?

collision-detection unreal-engine4 overlap unreal-engine5
1个回答
0
投票

OnComponentOverlap
OnComponentHit
确实可以通过相同的
UPrimitiveComponent
(例如球体碰撞)生成。但是,通常不会使用同一对象:根据碰撞设置,球体会“撞击”地板或“重叠”地板。

如果组件设置为“阻止”碰撞并正在进行物理模拟,则会调用

OnHit
;如果设置为“重叠”,则会调用
OnComponentOverlap
,这意味着没有物理相互作用,并且它们可以相互穿过。如果设置为“忽略”,则两者都不会触发。

可能会发生同一个组件被设置为“阻止”某些事物并“重叠”其他事物的情况,在这种情况下,这两个事件将在不同时间被调用。

如果您需要一个球体,既在精确接触地板时触发击中事件,又在大致位于地板上时触发重叠事件,那么您确实可以使用两个不同的组件,具有不同的碰撞设置和稍微不同的尺寸。

OnHit 和 OnOverlap 事件中的大多数信息非常相似,因此根据具体的用例,可能只需要一个即可。然而,对于球面碰撞(以及任何原始碰撞,如胶囊盒),重叠计算非常便宜,因此使用一个和两个之间几乎没有性能差异。

© www.soinside.com 2019 - 2024. All rights reserved.