Hello. I’m just trying to implement fall damage into the mover sample while having the current velocity while in the air print to screen. It feels like I’ve attempted everything even though those attempts have been a mess so far. Please help.
Hey there,
You don’t have to use actually too much booleans.
When pawn movement mode changes → InAir->OnGround->GetLastUpdateVelocity
So OnGround can be only after InAir, so when OnGround triggered simply you can access movement components last update velocity and it should reflect the falling velocity.
If you want you can give damages by step or by curve depending on the severeness of hit
Something like this with default unreal damage system you can use, I have a specific damage system.
Hello, and thank you for replying. I think something is different with Mover specifically because it won’t let me use get last updated velocity. The component only connects to Get Velocity which isn’t the same depending on the ‘on ground‘ or ‘in air‘ state.
Not sure with mover to be honest, it should be somewhere lastupdatevelocity but maybe not exposed and its ok.
You can manually have that if you want. You can just get velocity with a tick delay as a variable and use that OnMovementMode change (InAir->Ground) trigger. So when grounded you can still read the falling velocity of last frame.
This will work as PreVelocity and even you can check if Velocity.Z is negative and record that time only with falling and process.
OnTick -> RecordLastVelocity()
RecordLastVelocity()
If(Velocity.Z< 0 && GetVelocity().Z < LastVelocity) -> SetVariable( LastVelocity = GetVelocity())
OnGround -> DoOnce->If(LastVelocity < -800)->GiveDamage(self, 99999)
OnAir -> LastVelocity = 0
Furthermore depending on the design (If you don’t have damage variations), you can simply check
OnTick -> CheckTerminalVelocity()
CheckTerminalVelocity()
If(Velocity.Z< 0 && ABS(Velocity.Z) > 800)
then
bDoLethalFallDamage = true
OnGround -> DoOnce->If(bDoLethalFallDamage)->GiveDamage(self, 99999)
I watched some of that 3hour Q&A video. It turns out Mover uses “sync states” in separate BPs that work independently of the main player BP. I was able to get the velocity to print but without singling out the Z component [EDIT: fixed this with a break node]. Still working on the fall damage part. I want to store the maximum Z as a variable so I can do a comparison with a falling velocity that initiates the death event…
Yeah didn’t know that for sure, I am also watching a video around that and checking some stuff. You can already have some of that, after movement change event you can set variable in pawn imo.
Also I check that Mover component has an impact handle that would possibly return impact data but seems it’s not implemented yet, it’s redundant right now.
However (Probably it’s not something you are looking for but ) if you use chaos mover, that time since it’s simulated , it’s really possible to get an accurate impact result atleast by collision to start with
Which actually returns at that moment closest thing to an impact magnitude (how hard I hit the ground) and this can be gated OnLanded.
If you want to do this kind of a much accurate impact calculation while using Mover which is kinematic after all , I suppose a helper device can be crafted which simulates physics but directly not interacting with the pawn collision channels.









