Example of how to do Launch Attacks

Hello everyone,

I was wondering if someone could show me an example of how to make launch attacks where the enemy is launched into the air with a launch damage animation (animation for launch damange or maybe a regular damage animation), drifts for a second or two (for a potential combo) then falls.

In my game this is all handled in the enemy bp with a custom event that has a float (Incoming Damage), and an Enum which will tell the enemy that the attack is either Normal, Heavy, Peircing, Launch, Heavy Launch.

This is the first time I’m tackling Launching and I know that there’s a Node for it, but I’m not too sure how to configure it and what else I might need.


Well, it depends on what you want. If you want a DMC-style “launch-and-float”, you could probably launch the enemy vertically using a launch node, then have a delay or Timeline node that, at the appropriate point in the jump, fires a Launch event every Tick with near-zero values in its vector (0 values won’t work; use 0.01,0.01,0.01 for example) and XY and Z set to override. That way every Tick the enemy’s velocity will be reset to zero (essentially) until the Timeline ends and the enemy is allowed to fall.

But there are other potential approaches. For instance, you might try disabling Gravity and then using a Timeline or curve to adjust the enemy’s vertical position over time (by setting its location to some cached position value + the current value of the timeline’s vector curve), which will give you a finer control over the way the enemy enters the air, slows to a stop, and then falls again. The disadvantage to this latter approach is that it’s more error-prone (using a Timeline to set Actor Location rather than overriding his velocity can create unwanted jitter sometimes, and you run into issues with how physics elements might interact with him while he’s set to zero gravity and his velocity is left uncontrolled).

Can you show me an example of the DMC style launch? I gave it a shot, but I’m not getting any results. I am playing a damage animation right before the launch, but I may remove it since I don’t think it would fit.

I’ll do an example tomorrow maybe, but I can walk you through the steps on your enemy’s BP:

  1. Create a Timeline node. Give it a Length value equal to the desired duration of the apex FLOATING portion of the launch
  2. Create a Custom Event that you will call when you want to launch the enemy.
  3. After the Custom Event, hit a single Launch node with a vector that’s (0.01, 0.01, 900) or some other suitably high Z value (to knock the enemy into the air), set to Override XY and to Override Z.
  4. After the Launch, hit a delay node with some suitable time that corresponds to your original launch vector (this is how long after launching the enemy will wait BEFORE floating; set it too short and the enemy will float just above the ground, set it too long and the enemy will begin falling again before he hovers. This will need to be tuned to taste).
  5. After this delay node, call Play From Start on the Timeline from step 1.
  6. feed the “Update” output of the Timeline node to a separate Launch command, also set to Override XY and Override Z, with a launch vector of (0.01, 0.01, 0.01)

Thanks so much!! It worked! My only issue is adjusting the height the enemy is launched and deciding if I want to apply damage then launch or launch then apply damage. Also, When I configure my aerial attacks, How can I make him stay in the air while being hit until he is no longer being hit?

Ah, now that IS the trick.

My instinct would be to say “if you’re using the timeline, just have every attack PlayFromStart that timeline”… But that means every aerial attack will restart the suspension timeline, and you may not want all attacks to keep him floating for the same length of time. If not, then that won’t work

Adjusting the height the enemy is launched can be done by tweaking the Z component of the very first Launch node (the one that sends him into the air), where bigger values will send him higher, and/or tweaking the delay length between launching and triggering the floater timeline.

Perhaps if I could control the length of the timeline I could use that method with no issue. Guess I’ll experiment with the set timeline length.

Let me know how you got on with this as i am doing a similar styled game.
Afterall DMC was made using this engine.