> ## Documentation Index
> Fetch the complete documentation index at: https://docs.kinemation.xyz/llms.txt
> Use this file to discover all available pages before exploring further.

# GASP 5.7+

> This tutorial shows how to integrate the Tactical Shooter Pack with GASP based on UE5.7.

## Project Download (UE 5.7 only)

Follow these steps to download and install the **Unreal Engine 5.7** integration project.

<Steps>
  <Step title="Download the project">
    <CardGroup cols={1}>
      <Card title="TacticalShooterPack_Integration_GASP.zipGoogle Docs" href="https://drive.google.com/file/d/1h5zzf56JRX-7mo1XtNu_U3djJSk5S6pk/view?usp=drive_link" />
    </CardGroup>
  </Step>

  <Step title="Import the Tactical Shooter Pack">
    <Frame caption={"Via Fab Launcher."}>
      <img src="https://mintcdn.com/kinemation/2P0DGfZe1PbAUTxl/images/tactical-shooter-pack/unreal/8f458c96a984b5ac1b5e.png?fit=max&auto=format&n=2P0DGfZe1PbAUTxl&q=85&s=bff20ef8c3dbc4f0e45252bf52a85f32" alt="" width={2169} data-path="images/tactical-shooter-pack/unreal/8f458c96a984b5ac1b5e.png" />
    </Frame>

    Select the project you just downloaded, then add the pack content to it.

    <Info>
      **Tip**: For manual installation, copy the “KINEMATION” folder from the Tactical Shooter Pack download and paste it into the downloaded integration package.
    </Info>
  </Step>
</Steps>

## Character Meshes

#### Base Blueprint

First, we need to create a base for our integration. Duplicate the **BP\_TacticalShooterCharacter** (**KINEMATION/TacticalShooterPack/Blueprints**):

<Frame caption={"New blueprint."}>
  <img src="https://mintcdn.com/kinemation/2P0DGfZe1PbAUTxl/images/tactical-shooter-pack/unreal/d5990b9dfcb818fe9e2e.png?fit=max&auto=format&n=2P0DGfZe1PbAUTxl&q=85&s=255a4f370524b9fa281fccf93463fae1" alt="" width={102} data-path="images/tactical-shooter-pack/unreal/d5990b9dfcb818fe9e2e.png" />
</Frame>

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

<Frame caption={"Change the parent class."}>
  <img src="https://mintcdn.com/kinemation/-AzWoLR_QWINVM-e/images/tactical-shooter-pack/unreal/1ac31f991b053bf73074.png?fit=max&auto=format&n=-AzWoLR_QWINVM-e&q=85&s=083527fc0e5b9c14e8c0e8d76f4973bc" alt="" width={1247} data-path="images/tactical-shooter-pack/unreal/1ac31f991b053bf73074.png" />
</Frame>

Now we need to add a skeletal mesh for our character model. Let's call it "Player":

<Frame caption={"Add this new Skeletal Mesh Component."}>
  <img src="https://mintcdn.com/kinemation/2P0DGfZe1PbAUTxl/images/tactical-shooter-pack/unreal/7d56856e53d5d3faae2f.png?fit=max&auto=format&n=2P0DGfZe1PbAUTxl&q=85&s=88933e9efc716ce84ba39edb65462397" alt="" width={362} data-path="images/tactical-shooter-pack/unreal/7d56856e53d5d3faae2f.png" />
</Frame>

Next, assign the modular skeletal mesh — we'll use our modular Operator model:

<Frame caption={"Pick this skeletal mesh."}>
  <img src="https://mintcdn.com/kinemation/2P0DGfZe1PbAUTxl/images/tactical-shooter-pack/unreal/337b0fffa6313054df2c.png?fit=max&auto=format&n=2P0DGfZe1PbAUTxl&q=85&s=4363e0d99d7209764bf4de80b28bc1e3" alt="" width={546} data-path="images/tactical-shooter-pack/unreal/337b0fffa6313054df2c.png" />
</Frame>

Find the `GetPlayerMesh` interface function and return the new "Player" skeletal mesh component:

<img src="https://mintcdn.com/kinemation/gs-VS6eri6gRdFbg/images/tactical-shooter-pack/unreal/f7ac2a79283ded611237.png?fit=max&auto=format&n=gs-VS6eri6gRdFbg&q=85&s=be808f8befa4d186120b207ff0c86473" alt="" width={277} data-path="images/tactical-shooter-pack/unreal/f7ac2a79283ded611237.png" />

<img src="https://mintcdn.com/kinemation/gs-VS6eri6gRdFbg/images/tactical-shooter-pack/unreal/f762e7717f44a0eef7b8.png?fit=max&auto=format&n=gs-VS6eri6gRdFbg&q=85&s=cd7bf50874a1dde5b62c40588b49df0a" alt="" width={392} data-path="images/tactical-shooter-pack/unreal/f762e7717f44a0eef7b8.png" />

#### Motion Matching Mesh

Select the "Mesh" component and set its animation blueprint to **SandboxCharacter\_CMC\_ABP** and skeletal mesh to **SKM\_UEFN\_Mannequin**:

<Frame caption={"Select the Mesh component in the hierarchy."}>
  <img src="https://mintcdn.com/kinemation/2P0DGfZe1PbAUTxl/images/tactical-shooter-pack/unreal/800327025485c3760cc9.png?fit=max&auto=format&n=2P0DGfZe1PbAUTxl&q=85&s=d6b708da72b5e8781c41619f50709ef3" alt="" width={376} data-path="images/tactical-shooter-pack/unreal/800327025485c3760cc9.png" />
</Frame>

<Frame caption={"Update the Anim Class and Skeletal Mesh Asset."}>
  <img src="https://mintcdn.com/kinemation/-AzWoLR_QWINVM-e/images/tactical-shooter-pack/unreal/015e17f6281d0f38acd5.png?fit=max&auto=format&n=-AzWoLR_QWINVM-e&q=85&s=ad41a856cac28abfe05f33cbd589d4af" alt="" width={477} data-path="images/tactical-shooter-pack/unreal/015e17f6281d0f38acd5.png" />
</Frame>

<Info>
  **Note**: The "Mesh" skeletal component will generate a motion-matching pose (full-body movement), which will be blended with our tactical animations.
</Info>

#### First Person Camera

Parent the **Camera** component to the Player mesh we created earlier:

<img src="https://mintcdn.com/kinemation/-AzWoLR_QWINVM-e/images/tactical-shooter-pack/unreal/16341d4f25029461298a.png?fit=max&auto=format&n=-AzWoLR_QWINVM-e&q=85&s=8a081a3a11373380a4f2c83d52cd60c6" alt="" width={199} data-path="images/tactical-shooter-pack/unreal/16341d4f25029461298a.png" />

Select the **FPCamera** as a target attachment socket and reset its position and rotation values:

<img src="https://mintcdn.com/kinemation/2P0DGfZe1PbAUTxl/images/tactical-shooter-pack/unreal/eb7cfc63d0ac4a6035fc.png?fit=max&auto=format&n=2P0DGfZe1PbAUTxl&q=85&s=cc824177c82d0aeedb60522f10ffccde" alt="" width={434} data-path="images/tactical-shooter-pack/unreal/eb7cfc63d0ac4a6035fc.png" />

#### Disabling GASP Cameras & Mesh

To disable GASP camera logic and hide the default mesh, we need to add a couple of code snippets at the end of the Begin Play event.

To hide the default **Sandbox** mesh, add these nodes to the graph:

<Frame caption={"How to hide the base mesh."}>
  <img src="https://mintcdn.com/kinemation/2P0DGfZe1PbAUTxl/images/tactical-shooter-pack/unreal/3c73717ce35b1dbc1474.png?fit=max&auto=format&n=2P0DGfZe1PbAUTxl&q=85&s=1c06be1ce9d87453d7961cd2fb3af91a" alt="" width={564} data-path="images/tactical-shooter-pack/unreal/3c73717ce35b1dbc1474.png" />
</Frame>

To disable the default camera logic, use this code snippet

<Frame caption={"Add this right after Begin Play."}>
  <img src="https://mintcdn.com/kinemation/2P0DGfZe1PbAUTxl/images/tactical-shooter-pack/unreal/4c8c5bba10fe47945031.png?fit=max&auto=format&n=2P0DGfZe1PbAUTxl&q=85&s=6c823721c64330a273c8d1fd47c898e0" alt="" width={989} data-path="images/tactical-shooter-pack/unreal/4c8c5bba10fe47945031.png" />
</Frame>

Here's a video showing where to put this logic in the player blueprint:

<iframe src="https://iframely.net/a8CpTpDA" title="Embedded content" allow="encrypted-media *;" allowFullScreen className="w-full aspect-video rounded-xl" />

## Inputs

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

<Frame caption={"Update movement function."}>
  <img src="https://mintcdn.com/kinemation/2P0DGfZe1PbAUTxl/images/tactical-shooter-pack/unreal/cf63e19c011bc17b032b.png?fit=max&auto=format&n=2P0DGfZe1PbAUTxl&q=85&s=34edce563f0361d96c1589ba0ab8f354" alt="" width={483} data-path="images/tactical-shooter-pack/unreal/cf63e19c011bc17b032b.png" />
</Frame>

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

<Frame caption={"Updating current Gait."}>
  <img src="https://mintcdn.com/kinemation/2P0DGfZe1PbAUTxl/images/tactical-shooter-pack/unreal/a08290ac3029b022dfe4.png?fit=max&auto=format&n=2P0DGfZe1PbAUTxl&q=85&s=f79de30aa3126fe09f29fa8beca253e6" alt="" width={377} data-path="images/tactical-shooter-pack/unreal/a08290ac3029b022dfe4.png" />
</Frame>

<Tip>
  **Note**: `Gait` is from **GASP**, and `Movement State` is a **Tactical Shooter Pack** property.
</Tip>

Then, we need to update `bWantsToSprint`, `bWantsToWalk`, `bWantsToAim` and `bWantsToStrafe` properties.

<img src="https://mintcdn.com/kinemation/2P0DGfZe1PbAUTxl/images/tactical-shooter-pack/unreal/5a9f656b50310a984b00.png?fit=max&auto=format&n=2P0DGfZe1PbAUTxl&q=85&s=7f676fdccb282fa14a5f849a22e59397" alt="" width={842} data-path="images/tactical-shooter-pack/unreal/5a9f656b50310a984b00.png" />

## 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:

<Frame caption={"Creating a new animation blueprint."}>
  <img src="https://mintcdn.com/kinemation/2P0DGfZe1PbAUTxl/images/tactical-shooter-pack/unreal/6eba04e6864ffcc84417.png?fit=max&auto=format&n=2P0DGfZe1PbAUTxl&q=85&s=1137e1132fa5db65f3a7dd63659f0c1d" alt="" width={563} data-path="images/tactical-shooter-pack/unreal/6eba04e6864ffcc84417.png" />
</Frame>

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

<Frame caption={"Simple initialization logic."}>
  <img src="https://mintcdn.com/kinemation/gs-VS6eri6gRdFbg/images/tactical-shooter-pack/unreal/fd01f460d8b8ea1d2606.png?fit=max&auto=format&n=gs-VS6eri6gRdFbg&q=85&s=dd58aa6feea878e9ae3ebf5358a4c562" alt="" width={1221} data-path="images/tactical-shooter-pack/unreal/fd01f460d8b8ea1d2606.png" />
</Frame>

<Tip>
  **Tip**\*:\* Obtain a reference to your player Blueprint here.
</Tip>

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**:

<Frame caption={"Retargeting settings."}>
  <img src="https://mintcdn.com/kinemation/-AzWoLR_QWINVM-e/images/tactical-shooter-pack/unreal/076aeb2cf530c25bdc9e.png?fit=max&auto=format&n=-AzWoLR_QWINVM-e&q=85&s=454c5b8b0b39ae3cccfda65f70ab62ae" alt="" width={556} data-path="images/tactical-shooter-pack/unreal/076aeb2cf530c25bdc9e.png" />
</Frame>

After that, bind the `Source Mesh Component` using the "Mesh" property from the player blueprint.

<Frame caption={"Bind the \"Mesh\" here."}>
  <img src="https://mintcdn.com/kinemation/2P0DGfZe1PbAUTxl/images/tactical-shooter-pack/unreal/5089aa2f8ee3d24ee956.png?fit=max&auto=format&n=2P0DGfZe1PbAUTxl&q=85&s=26f3d68959d4386391c541e65da03f7b" alt="" width={265} data-path="images/tactical-shooter-pack/unreal/5089aa2f8ee3d24ee956.png" />
</Frame>

Next, add the ABP\_TacticalShooter\_UE5 linked anim instance and blend it with the retargeted pose:

<Frame caption={"Simple blending setup."}>
  <img src="https://mintcdn.com/kinemation/gs-VS6eri6gRdFbg/images/tactical-shooter-pack/unreal/fd879f2ae4427711db98.png?fit=max&auto=format&n=gs-VS6eri6gRdFbg&q=85&s=f7dfa73d7d10de8c3df38f88e0442efb" alt="" width={563} data-path="images/tactical-shooter-pack/unreal/fd879f2ae4427711db98.png" />
</Frame>

<Frame caption={"Override the upper body."}>
  <img src="https://mintcdn.com/kinemation/2P0DGfZe1PbAUTxl/images/tactical-shooter-pack/unreal/f293ccde10b2c748d4be.png?fit=max&auto=format&n=2P0DGfZe1PbAUTxl&q=85&s=8ebcaa3bcd6f9f455b0b761c0fe5d4c3" alt="" width={563} data-path="images/tactical-shooter-pack/unreal/f293ccde10b2c748d4be.png" />
</Frame>

<Info>
  **Tip**: Feed the retargeted pose into **Base Pose**, and Tactical Shooter animations into **Blend Pose 0**.
</Info>

## Parkour adjustments

Copy the jumping logic from `SandboxCharacter_CMC`:

<Frame caption={"Copy this logic to \"BP_TacticalShooterCharacter_GASP\"."}>
  <img src="https://mintcdn.com/kinemation/2P0DGfZe1PbAUTxl/images/tactical-shooter-pack/unreal/8545cfcb3e91f3128a8f.png?fit=max&auto=format&n=2P0DGfZe1PbAUTxl&q=85&s=75404a0392636bbfb1f2f8b5eb44f33c" alt="" width={1505} data-path="images/tactical-shooter-pack/unreal/8545cfcb3e91f3128a8f.png" />
</Frame>

Next, we need to adjust our layering in the animation blueprint. First, create 2 cached poses:

<Frame caption={"Cached poses."}>
  <img src="https://mintcdn.com/kinemation/2P0DGfZe1PbAUTxl/images/tactical-shooter-pack/unreal/a8a9e23acc2698488ec3.png?fit=max&auto=format&n=2P0DGfZe1PbAUTxl&q=85&s=608ffcd444630c32cfd0edde4e6c40cb" alt="" width={449} data-path="images/tactical-shooter-pack/unreal/a8a9e23acc2698488ec3.png" />
</Frame>

**UpperBody** carries Tactical Shooter animations; **MotionMatchingPose** carries full‑body motion.

Next, add a new **Layered Blend Per Bone** node:

<Frame caption={"This pose will be used when climbing."}>
  <img src="https://mintcdn.com/kinemation/2P0DGfZe1PbAUTxl/images/tactical-shooter-pack/unreal/7d0f7764d13627de5fe8.png?fit=max&auto=format&n=2P0DGfZe1PbAUTxl&q=85&s=5d4fa83a23b8fdc3ce07d8763390b883" alt="" width={1210} data-path="images/tactical-shooter-pack/unreal/7d0f7764d13627de5fe8.png" />
</Frame>

Add a **Blend by Bool** node and plug the layered result into **True** link:

<Frame caption={"Use the \"Upper Body\" as a \"False Pose\"."}>
  <img src="https://mintcdn.com/kinemation/2P0DGfZe1PbAUTxl/images/tactical-shooter-pack/unreal/62bbcae1700cc77a17e1.png?fit=max&auto=format&n=2P0DGfZe1PbAUTxl&q=85&s=8d8f5c174184abb5e5fdb14fb3446468" alt="" width={524} data-path="images/tactical-shooter-pack/unreal/62bbcae1700cc77a17e1.png" />
</Frame>

Right-click on the "Active Value" and bind "**BP\_TacticalShooterCharacter\_GASP▸AC\_TraversalLogic ▸ DoingTraversalAction**".

Finally, blend the result with the "MotionMatchingPose":

<Frame caption={"Final blending step."}>
  <img src="https://mintcdn.com/kinemation/2P0DGfZe1PbAUTxl/images/tactical-shooter-pack/unreal/67b1866be8eaa1e3f054.png?fit=max&auto=format&n=2P0DGfZe1PbAUTxl&q=85&s=3dd65235ac29c96b1574b6cc346ebd5b" alt="" width={1344} data-path="images/tactical-shooter-pack/unreal/67b1866be8eaa1e3f054.png" />
</Frame>
