Skip to main content

Character meshes

Note: Compatible with GASP 5.4, 5.5, 5.6. Add the latest Tactical Shooter Pack to your GASP project before starting.
First, we need to create a base for our integration. Duplicate the BP_TacticalShooterCharacter (KINEMATION/TacticalShooterPack/Blueprints):

New blueprint.

This will be our main player blueprint. Open it up, go to Class Settings and inherit it from the CBP_SandboxCharacter:

Change the parent class.

Next, select the “Mesh” and set its animation blueprint to ABP_SandboxCharacter and skeletal mesh to SKM_UEFN_Mannequin:

Default mesh component.

Properties for motion matching.

Note: The “Mesh” skeletal component will generate a motion-matching pose (full-body movement), which will be blended with our tactical animations.
Set Visible to false and Visibility Based Anim Tick Option to Always Tick Pose and Refresh Bones:

Keep this mesh hidden.

Always update animation, even if mesh is hidden.

Now we need to add a skeletal mesh for our character model. Let’s call it “Player” and parent the Camera component to it:

Camera is a first-person camera component.

In the Camera settings, set its parent socket to FPCamera and reset its transform:

Camera settings.

Find the GetPlayerMesh interface function and return the new “Player” skeletal mesh component:

Open up this function.

Tip: This interface function is used by weapons and animation blueprints to play animations, so make sure to provide the correct reference here.

Cameras

The second step is to properly set up cameras in our player blueprint. If you use GASP 5.5 or 5.6, make sure to use this code snippet to disable other cameras:

Place this in BeginPlay.

The Camera attached to Player is the main first‑person camera. Deactivate all other cameras that may be active at game start. If you are on 5.4, then simply set all other cameras’ Auto Activate property to false:

Disable other cameras.

Inputs

The next step is to properly update GASP inputs at runtime. Open the Update Player Movement function (it’s called on Tick):

Update movement function.

Find some place at the end of the function, and set the value of the Gait property based on Movement State:

Updating current Gait.

Note: Gait is from GASP, and Movement State is a Tactical Shooter Pack property.
Then, we need to update bWantsToSprint, bWantsToWalk, bWantsToAim and bWantsToStrafe properties.
Note: The setup differs between 5.4 and 5.5/5.6; refer to the images below.

5.4 version also requires the Update Rotation function to be called.

5.4/5.6 version.

Animation blueprint

Now we need to create an animation blueprint (ABP) that will combine motion-matching pose and animations from the Tactical Shooter Pack. Create a new Animation Blueprint using the UE5 Manny skeleton from the pack:

Creating a new animation blueprint.

Go to the Event Graph and use this snippet for initialization:

Simple initialization logic.

Tip*:* Obtain a reference to your player Blueprint here.
In the Anim Graph, add a Retarget Pose From Mesh node. Set the Retarget From to Custom Skeletal Mesh Component, and IK Retargeter Asset to RTG_UEFN_to_UE5_Mannequin:

Retargeting settings.

After that, bind the Source Mesh Component using the “Mesh” property from the player blueprint.
Next, add the ABP_TacticalShooter_UE5 linked anim instance and blend it with the retargeted pose:

Simple blending setup.

Override the upper body.

Tip: Feed the retargeted pose into Base Pose, and Tactical Shooter animations into Blend Pose 0.

Parkour adjustments

To properly blend parkour animations, we need to adjust our layering. First, create 2 cached poses:

Cached poses.

UpperBody carries Tactical Shooter animations; MotionMatchingPose carries full‑body motion. Next, add a new Layered Blend Per Bone node:

This pose will be used when climbing.

Add a Blend by Bool node and plug the layered result into True:
This will blend between parkour and normal poses using the DoingTraversalAction boolean from our character blueprint. Finally, blend the result with the “MotionMatchingPose”:

Final blending step.