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 actor steps from one surface to another with different properties (for example, if 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 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 Hit Event actually fires and kills him.

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

Hi RhythmScript,

I’ve spoken with 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 Current Floor from your CharacterMovementComponent, like this:

You don’t need to use Tags, it was just 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 floor’s BP, if you wanted to use a BP for that, and set it slightly higher than floor itself, and do a simple overlap event for that. Current Floor method seems more reliable, though.

Hope that helps!