How it’s animated
All animations target the UE5 Mannequin skeleton and rely on Epic’s IK bone set:
-
ik_hand_gun drives weapon movement..
-
ik_hand_r contains right‑hand animation data.
-
ik_hand_l contains left‑hand animation data.
The setup also uses Virtual Bones (VBs) for procedural animation:
-
VB ik_hand_gun (targets ik_hand_gun): Used to position the pistol during quick draw so the sidearm is correctly placed relative to the right hand.
-
VB ik_hand_gun_pivot (targets ik_hand_gun): All weapons are attached to this bone.
-
VB hand_r/l (targets hand_r/l): IK targets for the right/left hand.
-
VB lowerarm_r/l (targets lowerarm_r/l): Hint/pole targets for the right/left arm.
-
VB recoil_hand_r (targets root): Preserves right‑hand recoil when holding a pistol one‑handed.
-
VB ik_hand_gun_pose (targets root): Used to compute the aiming pose.
Tip: Weapons are not parented to the right hand; they attach to VB ik_hand_gun_pivot. This bone is blended in the Animation Blueprints so the final pose looks correct.
Animation Blueprints
The pack uses modular Animation Blueprints:
ABP_TacticalShooter_UE5
This is the main Animation Blueprint; it incorporates the other animation assets. Here’s how it works:
Base character pose
The base combines a static idle Anim Sequence with the main Anim Montage (DefaultSlot).
Curve-based animations
General movement (idle, walk, sprint, jump) is curve‑driven and procedural, applied primarily via Apply Additive nodes.
The Grounded and InAir states provide animation curves such as:
-
IK_X/Y/Z: position.
-
IK_Pitch/Yaw/Roll: rotation.
-
Camera Pitch/Yaw/Roll: camera animation.
These curves are layered on top of the base pose. Finally, we blend curve values (not poses) using a helper bone:
VB Curves is a dummy bone used solely to blend curve values - not to animate a pose.
Pistol quick draw
This layer applies quick‑draw and holster animations additively on top of the character pose:
Computes an additive pose per weapon, letting a single animation work across different poses.
Tip: Originally authored for TR15, but reused across weapons via this layer.Left hand actions
Apply left‑hand actions (e.g., take an item, push a door):
Finger firing motion
Animate the right index finger while firing:
A float smoothly interpolates to 1 while firing to rotate the finger, then returns to 0 afterward.
ABP_IK_Pose
Positions the weapon and hands before the main procedural pass. It works in stages:
VB ik_hand_gun_r
First, override VB ik_hand_gun_r with the base idle pose when quick‑draw is enabled:
This is important for positioning the pistol properly.
Copying the animation data
Copy the animation data from real bones to VBs. This lets us apply IK additively instead of overriding and breaking the pose:
Then override VB hand_r and VB hand_l with the current grip pose:
By default, all weapons attach the left hand to the gun. You can smoothly disable this via a curve - for example, many animations do this to let the left hand move freely:
Offsets
Finally, apply FTransform offsets to all IK bones.
ABP_IK_Ads
Applies procedural aiming in two steps:
-
Snap the weapon to the camera socket.
-
Apply the Aim Point local transform.
Note: The FPCamera socket is attached to neck_02:
ABP_IK_Sway
Applies aiming and movement sway to VB ik_hand_gun. Sway is computed in AC_TacticalShooterAnimation; this layer simply retrieves the FTransform and applies it to the bone:
ABP_IK_Main
The final Animation Blueprint, responsible for:
-
Recoil
-
IK Motions
-
Leaning and Aim Offset
-
IK
-
Hiding the head bone
Recoil
Recoil animation values are retrieved from the Recoil Animation component and applied via Transform (Modify) Bone. We preserve the right‑hand pose before applying recoil (needed for pistol quick draw).
IK Motions
IK Motions are applied similarly to recoil. Motions include aiming and fire‑mode transitions (“boop”/“jiggle” animations).
Leaning
Leaning distributes the angle evenly across spine bones:
Curve-based animations
Movement (idle, walk, sprint, jumping) is applied directly to VB ik_hand_gun:
Curve values (IK_X/Y/Z, IK_Pitch/Yaw/Roll) are retrieved here and plugged into the respective translation and rotation axes.
Aim Offset
Like leaning, Pitch is applied across spine bones to make the character look up and down:
IK and head bone
Finally, Two‑Bone IK nodes apply IK using VB hand_r and VB hand_l as targets. We also scale the head bone to zero if HideHeadMesh is true: