Event Hit not registered by CharacterMovement if character Steps Down to surface

If a Character steps down off of one surface/object onto another surface (because they are vertically close enough), an Event Hit is not fired.

This is a problem if the actor steps from one surface to another with different properties (for example, if the actor he is stepping down onto is told to deal damage to any actor which Hits it); I have a lava-floor actor that will kill the player if he jumps onto it, but if he steps from a low enough ledge he can walk right across it; until he jumps and lands, at which point the Hit Event actually fires and kills him.

I can probably work around it with traces but it seems like a bug with the collision system.

Hi RhythmScript,

I’ve spoken with the developers about this, and it sounds like it’s not really a bug but a question of how they want to handle things like this. A continual event hit when you’re walking on something (or a small enough change in hit, which doesn’t register a hit) isn’t really ideal either. I’ll let you know if they make any changes in this regard.

For now, however, an optimal way to do this is to get the Current Floor from your CharacterMovementComponent, like this:

You don’t need to use Tags, it was just the easiest way to show how this works. This is essentially doing a Line Trace directly down, so you wouldn’t need to implement your own system for that.

Of course, you could also use a collision component inside the floor’s BP, if you wanted to use a BP for that, and set it slightly higher than the floor itself, and do a simple overlap event for that. The Current Floor method seems more reliable, though.

Hope that helps!