Anim Notify still playing when blending out

I’m using Anim Notifies to set variables for when you’re able to buffer inputs, play next action, etc. I also have a notify lastly that enables you to cancel out of it by just walking, this is done mainly at the end of attack animations. The animations are played through montages.

The thing is, if you press any action again right before the cancel notify plays, it will be queued and played regardless, meaning that you can cancel right out of your next action at any point. The combo is also reset when you can cancel, so it looks really weird if you’re attacking at the perfect time.
I have been trying to check if the animation is playing or not, and then execute if it is playing and not blending out, but there doesn’t seem to be a way to do this. I’ve also tried editing the trigger weight and montage tick type for testing but neither of them made a difference.

So I’m starting to wonder if anim notifes can be used this way at all, considering that I don’t see released third person action games on ue have this issue. If only there was a way to only play the notify if the triggering animation is 100% playing, which I thought the trigger weight was, but doesn’t seem to do anything.

For clarification, I’m using anim notifies on the actual animations, and not in the montage. I’ve tried using notifies in the montage itself, but got the same result so no luck there either. I’m starting to think that I’m missing something, or I’m going about this the completely wrong way.

I have found a temporary solution by disabling the cancel event for a second whenever an action is performed. This way the event doesn’t trigger at all, though requiring a bit more manual adjusting, it works for now. I’d still like to figure out the notify problem though, so I’m still accepting any help you may have! :slight_smile:

Same issue!
I dived into source code of AnimInstance and AnimMontage, and tried to stop notifies when montage blend out, but it made things worse.
If I stop all notifies internally, they will all go back to queue and start again on next tick.

I think this is a issue that Epic should fix. It seems like they have no intention to bring logic into notifies. They think notifies are only for visual effects and animation control.

How you solved this?

Rgular animation driven notifies aren’t designed to be precise enough to allow for managing an input buffer.

By design they fire “whenever” they can. That could mean instantly, or it could mean 2 hours down the line when the engine catches up.

Probably find a better input buffer tutorial if you are following one, or devise a better solution (like making a c++ class to get animation time and using math to toggle buffer related things).

So I ended up with firing things from "NotifyEnd" in OnMontageBlendingOut. Works like a charm.
Hopes it will help somebody


4 Likes