OnHit Events not triggering consistently with Substepping / Tick Physics Async

I’ve been messing around with physics and substepping and triggering OnHit events in blueprints.

Test case:

  • A physics ball sent forward into a wall with an impulse multiple times in a row, write something on screen when hitting the wall

Results:

  • Substepping OFF: OnHit triggers every time, ball ends up going through collisions eventually due to the impulse

  • Substepping ON: OnHit triggers inconsistently (the more substeps, the less consistent), the ball seems to react properly on collision, especially at lower Max Substep Delta Times (ex. 0.003333)

  • Tick Physics Async:

    • OnHit triggers every time with higher Async Fixed Time Step Size values (ex. 0.016666), however the ball will go through collisions at high velocity
    • OnHit stops triggering consistently with lower Async Fixed Time Step Size values, however the ball will collide properly (ex. 0.003333)

I’ve tried to replicate this test for substepping using the same scenario across both UE4 and UE5, using the UE4 Rolling Ball starter project assets (the ball and a wall):

  • Same results with Substepping OFF (OnHit triggers, ball goes through walls sometimes)

  • Substepping ON in UE4 works as expected, triggering OnHit events every time and preventing physics glitches, even with very low Max Substep Delta Time values (ex. 0.003333)

  • Substepping ON in UE5 fails to trigger OnHit events half the time, with objects colliding as expected at low Max Substep Delta Time values (ex. 0.003333)

To me this looks like an issue with triggering OnHit events at low Delta Time values (Async or Substepping) in UE5.

Is there something I’m overlooking?

Any update on this? According to the UE4 docs the engine is suppose to queue events and execute them on the next tick, but that indeed doesn’t work at the moment.

I reported the issue and it has been confirmed: