Skip to main content

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:
  1. Snap the weapon to the camera socket.
  2. 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:
  1. Recoil
  2. IK Motions
  3. Leaning and Aim Offset
  4. IK
  5. 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: