Is there a way to get "Event on landed" or something similar in just an actor BP and not a character?

Anyone know? Thanks

I’m sure you could find a way to get your desired functionality with a line trace. But it really depends on how complex you want it to be.

Here’s the doc link on how to use a single line trace:

You also could use OnHit Events:

In both, you still would have to check whether the actor is landing or if it is a non-landing hit though.

1 Like
1 Like

On Landed is specific to the Character class.

1 Like

What kind of actor are you interested in? What does “landing” mean?

In general, you can turn on “simulate physics” and “simulation generates hit events” on a StaticMeshActor that has a mesh with simple collision, or has a collision object.

Then, bind to the “hit events” on your colliding components, which will tell you each time the object bumps into something, be it ground, wall, player, …

You then have to figure out what that “bumping” means – is it a “landing” or not. Easiest is probably to look at the normal and location of the “bump” – if the location is close to the bottom of the object, and the normal is somewhat straight up, then it’s likely a “landing.”

Additionally, you’ll want to remember whether the object had a “ground” collision the step before. Trigger your own “On Landed” event (create an event dispatcher in the blueprint, invoke it in the check) when you didn’t have a floor collision last tick, but you do this tick. (or you may want to keep a counter for how many ticks without collision before you’re “airborne” – your logic will vary based on requirements.)

(actually, the “set to 0” branch is busted, this should be done in tick, but too late to fix now.
Move most of that work to tick, and just detect/update a variable that stores the contact in the impact callback)

1 Like