How to Use the Demo Animation Notifies & States
Learn how the Tactical FPS animation notifies and notify states work in Unreal Engine 5, including casing, magazine, ADS, and grip logic.
On This Page
Introduction
These animation notifies and states are included for demonstration purposes. They show how to set up the animations correctly in your own project.
The included code logic is made specifically for the demo setup. You’ll need to modify it to fit your project and integrate it into your own systems. Hopefully, it’s a solid starting point and helps you get the most out of the included animations.
Animation notifies and notify states drive the demo Blueprint logic. They’re used for:
Ejecting casings
Spawning physics objects, such as empty magazines
Blocking other actions or input during an animation
Blocking ADS during an animation
Toggling the visibility of the reserve magazine where applicable
Throwing physics objects

AN_TFA_DropMagazine
Drop Magazine (AN_TFA_DropMagazine)
Spawns a physics magazine during reloads that don’t retain the empty magazine.
Used in:
Reload Quick
Reload Empty

Add it to an animation montage. It automatically uses the magazine mesh assigned in Base Config (BP_TFA_BaseConfig).
Tweak these in the Details panel:
Impulse ForceHow much linear force is applied to the spawned magazine
Rotation ForceHow much rotational force is applied to the spawned magazine

How to Modify It
Edit the spawn logic in the Spawn Dropped Magazine function inside Base Weapon (BP_TFA_BaseWeapon).
AN_TFA_EjectCasing
Eject Casing (AN_TFA_EjectCasing)
Used in weapon fire animation montages to spawn an ejected casing with physics applied.
It uses the SOCKET_Eject socket that is placed on the weapon’s skeleton to determine the initial spawn location and rotation for the empty casing.

Tweak these to adjust casing behavior:
Min and Max Rotation OffsetsControls how much initial rotation offset is applied relative to the spawn socket rotation. It’s useful for adding randomization to the casing direction. Keep these values small.
Min and Max Eject ForceA range for the amount of force applied to the spawned casing. This is also useful for adding variation.
Rotation SpeedControls how much rotational force is applied to the spawned casing. This is applied once at spawn, simulating realistic casing behavior.

How to Modify It
Edit the spawn logic in the Eject Casing function inside Base Weapon (BP_TFA_BaseWeapon).
AN_TFA_SpawnObjectAttached
Spawn Object Attached (AN_TFA_SpawnObjectAttached)
Spawns a specific Blueprint actor on a socket on the character mesh, then attaches it.
In the demo, it’s used in the healing animations. It spawns and attaches the syringe Blueprint actor to the hand while healing.

Settings you can tweak:
Object to SpawnThis is the actor to spawn.
AnimationA specific animation to play on the spawned actor. It’s made for the syringe healing animation. It can also be used for things like grenade pins, flare caps, or similar props.
Spawn Socket NameThe exact socket name to attach to. It also uses this socket’s transform for the initial spawn transform.
Location OffsetAdds an offset to the original transform. Useful if the item appears in the wrist instead of the hand and you need to nudge it.
Rotation OffsetSame as the location offset, useful for adjusting the visual rotation of the spawned actor.
Visibility DelayTime after spawn before the actor becomes visible. The prop animation needs to start instantly to stay in sync, but you might not want to show it immediately. For example, in the healing animation, the hand goes off-screen first to “grab” the syringe.

How to Modify It
Edit the spawn logic in the CGraph Spawn Object Attached function inside Base Character (BP_TFA_BaseCharacter).
AN_TFA_ThrowPhysicsObject
Throw Physics Object (AN_TFA_ThrowPhysicsObject)
In the demo, this is mainly used in the healing animation to spawn physics props, like the syringe cap during removal, and the physics syringe at the end.
It’s also useful for any thrown physics prop, like grenades or magazines.

Settings you can tweak:
Object to SpawnThe physics actor you want to spawn when the notify fires.
Spawn Socket NameThe exact name of the socket you want to spawn the actor from.
Location and Rotation OffsetsAdds a directional offset to the initial spawn socket transform. Useful if you don’t want to modify the socket rotation/location directly but still need to adjust the throw direction.
Throw ForceHow much force to apply initially when spawned.
Throw Rotation ForceHow much rotational force to apply to the spawned actor.
Destroy Socket ItemWhether to destroy any pre-existing spawned items attached to the character. It checks for the
DisposableItemtag on spawned actors and removes any that have it. In the demo, it removes the previously spawned syringe actor during the healing animation. This creates the illusion that the same syringe gets thrown. In reality, it deletes the static prop and spawns a physics syringe in the same spot.

How to Modify It
Edit the spawn logic in the Throw Physics Object function inside Base Character (BP_TFA_BaseCharacter).
AN_TFA_UnlockActions
Unlock Actions (AN_TFA_UnlockActions)
Tells the character Blueprint it can perform other actions again. The character sets the bIsBusy boolean when playing animation montages (blocking other actions/animations), and this notify sets it back to false.
This is usually placed near the end of an animation. Put it where the character’s left hand returns to the weapon, so control returns at the right moment.

How It Works
It casts to Base Character (BP_TFA_BaseCharacter) and sets bIsBusy to false.

ANS_TFA_BlockADS
Prevents the character from aiming for the entire time it’s active. It’s used for demo animations that don’t have an aiming variation, or that look broken while aiming.

How It Works
It casts to Base Character (BP_TFA_BaseCharacter) and executes Force Stop Aiming, which blocks aiming input for the duration of the notify state.
ANS_TFA_HideMainMag
Hide Main Mag (ANS_TFA_HideMainMag)
Used on weapon animation montages to hide the main magazine mesh. This is helpful for tactical reloads (where the character retains the magazine) so you don’t see the old mag pop back into the weapon at the end.

How to Modify It
You can modify the logic directly in the Set Magazine Visibility function inside Base Weapon (BP_TFA_BaseWeapon).
ANS_TFA_ShowReserveMag
Show Reserve Mag (ANS_TFA_ShowReserveMag)
Works the same as the Hide Main Mag notify state, but it checks the Is Reserve boolean to target the reserve magazine mesh.

The main difference is that they are attached to different sockets on the weapon:
Main Mag
Socket Magazine Attachment
Reserve Mag
Socket Magazine Reserve Attachment
Visibility is toggled based on which socket the mag is attached to, which is why there are two notify states.

How to Modify It
You can modify the logic directly in the Set Magazine Visibility function inside Base Weapon (BP_TFA_BaseWeapon).
ANS_TFA_LeftHandGrip
Left Hand Grip (ANS_TFA_LeftHandGrip)
“Detaches” the left hand from the weapon during action animations like reloads, inspects, and interactions.
This matters most when using grip attachments. They change left-hand placement and finger pose, so playing a reload on top can look off and won’t align with the magazine.
The grip poses are applied using a Layered Blend Per Bone node. The animation notify state directly influences the Current Grip Alpha.
While the notify state is active in an animation montage, the alpha is set to 0. When it ends, it goes back to 1, snapping the left hand back to the custom grip pose.
This means you only need a single pose animation per grip, while still reusing animations that expect a different default hand pose.

How It Works
When the notify state activates in the montage, Update Left Hand Grip is executed through Animation State Interface (BPI_TFA_AnimationState), and the Is Left Hand on Weapon boolean is set to false.
When the state ends, it sets Is Left Hand on Weapon to true again, attaching the hand to the weapon.

The notify state should cover the entire time the left hand is off the weapon, like when grabbing a magazine or holding another part of the weapon. Add a bit of padding at the start and end to smooth it out.

Inside the notify state details in the animation montage, you can adjust the blend speed for the hand detachment. This is handy if you want snappier movement back to the grip (and vice versa).

How to Modify It
The Is Left Hand on Weapon boolean is toggled inside the character’s Animation Blueprints.

They both have Animation State Interface (BPI_TFA_AnimationState) implemented in the Class Settings.

The boolean and blend speed values are modified inside the Animation Blueprints, and both call the same function through Animation State Interface (BPI_TFA_AnimationState).

The character’s left-hand grip pose blend is controlled by the Current Grip Alpha value.

The Current Grip Alpha value is calculated every frame and interpolates based on Grip Blend Speed and bIsLeftHandOnWeapon, both derived from Animation State Interface (BPI_TFA_AnimationState).

The Interpolate Grip Alpha custom event is called every frame.

Last updated
Was this helpful?

