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

# 💥Procedural Recoil

> This section explains how to use the pack’s procedural recoil.

## Recoil Animation

This Actor Component generates smooth weapon‑firing animation at runtime:

<Frame caption={"Recoil Animation component."}>
  <img src="https://mintcdn.com/kinemation/2P0DGfZe1PbAUTxl/images/tactical-shooter-pack/unreal/304b0a9c5292d9474684.png?fit=max&auto=format&n=2P0DGfZe1PbAUTxl&q=85&s=f8d4b91f43e2c289fa310831759f1aef" alt="" width={385} data-path="images/tactical-shooter-pack/unreal/304b0a9c5292d9474684.png" />
</Frame>

It is typically added to the character Blueprint, but you can also add it to the weapon. Call its methods as described below.

### Init

<Frame caption={"Init method."}>
  <img src="https://mintcdn.com/kinemation/2P0DGfZe1PbAUTxl/images/tactical-shooter-pack/unreal/75a32706937a91935b10.png?fit=max&auto=format&n=2P0DGfZe1PbAUTxl&q=85&s=d0d85dc09ef3aa47de1d9424aa005c08" alt="" width={366} data-path="images/tactical-shooter-pack/unreal/75a32706937a91935b10.png" />
</Frame>

Use this function to update active recoil settings. It requires a **Recoil Data Asset** and **Fire Rate** (rounds per minute).

### Play/Stop

<Frame caption={"Play, Stop functions."}>
  <img src="https://mintcdn.com/kinemation/gs-VS6eri6gRdFbg/images/tactical-shooter-pack/unreal/f9734da40879b33ea357.png?fit=max&auto=format&n=gs-VS6eri6gRdFbg&q=85&s=201fdaab05fd7acbe80e3354bdf709a4" alt="" width={372} data-path="images/tactical-shooter-pack/unreal/f9734da40879b33ea357.png" />
</Frame>

Call **Play** whenever a shot is fired, and **Stop** when the fire input is released.

### Set Aiming

Use this method to update the current aiming state:

<Frame caption={"Set Aiming."}>
  <img src="https://mintcdn.com/kinemation/2P0DGfZe1PbAUTxl/images/tactical-shooter-pack/unreal/a170b61b9abdbebb2ccf.png?fit=max&auto=format&n=2P0DGfZe1PbAUTxl&q=85&s=7793e1d5b087b070e5c43ee6cebf842a" alt="" width={374} data-path="images/tactical-shooter-pack/unreal/a170b61b9abdbebb2ccf.png" />
</Frame>

### Set Fire Mode

Use this method to update the current fire mode:

<Frame caption={"Set Fire Mode."}>
  <img src="https://mintcdn.com/kinemation/-AzWoLR_QWINVM-e/images/tactical-shooter-pack/unreal/1a6d9d832122bdfcdd00.png?fit=max&auto=format&n=-AzWoLR_QWINVM-e&q=85&s=fbdde0b54a04cdc11efed1fd133e3f81" alt="" width={427} data-path="images/tactical-shooter-pack/unreal/1a6d9d832122bdfcdd00.png" />
</Frame>

Three fire modes are supported:

* Semi

* Burst

* Auto

<Info>
  **Note:** For Recoil Animation, there is no technical difference between **Burst** and **Auto**.
</Info>

## Recoil Animation Data

This Data Asset contains recoil properties, from simple inputs to complex layers such as **Sway** and **Pushback**.

### Input values

<Frame caption={"Input Hip values."}>
  <img src="https://mintcdn.com/kinemation/-AzWoLR_QWINVM-e/images/tactical-shooter-pack/unreal/294833e772b3152867f9.png?fit=max&auto=format&n=-AzWoLR_QWINVM-e&q=85&s=cd14f90a24d1bb43a600b983156097f6" alt="" width={563} data-path="images/tactical-shooter-pack/unreal/294833e772b3152867f9.png" />
</Frame>

**Hip** and **Aim** properties define recoil ranges. For **Yaw** and **Roll**, a `FVector4` avoids values too close to zero. Final value is computed as:

### Controller Recoil

Adds pitch and yaw to the controller rotation:

<Frame caption={"Controller Recoil"}>
  <img src="https://mintcdn.com/kinemation/2P0DGfZe1PbAUTxl/images/tactical-shooter-pack/unreal/dfd9a5fc003a140654cc.png?fit=max&auto=format&n=2P0DGfZe1PbAUTxl&q=85&s=cce5663985598f3b2a15026501c16371" alt="" width={433} data-path="images/tactical-shooter-pack/unreal/dfd9a5fc003a140654cc.png" />
</Frame>

* **Horizontal Recoil Step**: Value range for the yaw input.

* **Vertical Recoil Step**: Value range for the pitch input.

* **Interp Speed**: Recoil smoothing speed.

* **Damping**: How fast recoil should recover.

* **Compensation**: How much player input is used for compensation. **1** uses all input; **0** uses none (the weapon settles after firing).

### Recoil Noise

Random **Y-Z** (right/up) movement that adds translation noise when firing:

<Frame caption={"Noise layer."}>
  <img src="https://mintcdn.com/kinemation/2P0DGfZe1PbAUTxl/images/tactical-shooter-pack/unreal/a6b5b8e44c86b1e540d1.png?fit=max&auto=format&n=2P0DGfZe1PbAUTxl&q=85&s=5ddeff871854b1d795a2371677309d35" alt="" width={411} data-path="images/tactical-shooter-pack/unreal/a6b5b8e44c86b1e540d1.png" />
</Frame>

* **Target**: Left and Up target values - these will be added every shot.

* **Interp Speed**: Smoothing speed.

* **Damping**: How fast noise should go to zero.

* **Aim Scalar**: Multiplier applied when aiming.

### Pushback

This layer is applied on the second shot of a burst and auto sequence:

<Frame caption={"Pushback layer."}>
  <img src="https://mintcdn.com/kinemation/2P0DGfZe1PbAUTxl/images/tactical-shooter-pack/unreal/c9e5a9f7d149c523593e.png?fit=max&auto=format&n=2P0DGfZe1PbAUTxl&q=85&s=0dddf27a0dac51ca044c77e51ec1ca80" alt="" width={382} data-path="images/tactical-shooter-pack/unreal/c9e5a9f7d149c523593e.png" />
</Frame>

* **Amount**: How much backward translation to apply.

* **Damping**: How fast the value should go to zero.

* **Interp Speed**: General smoothing speed.

### Progress

Accumulates **pitch** and **upward translation** with every shot:

<Frame caption={"Progress layer."}>
  <img src="https://mintcdn.com/kinemation/2P0DGfZe1PbAUTxl/images/tactical-shooter-pack/unreal/bdb08b889e5efe881e5d.png?fit=max&auto=format&n=2P0DGfZe1PbAUTxl&q=85&s=f05acc64622dd92e5bd5164969708c44" alt="" width={284} data-path="images/tactical-shooter-pack/unreal/bdb08b889e5efe881e5d.png" />
</Frame>

* **Pitch Interp Speed**: Smoothing pitch speed.

* **Pitch Damping**: How fast pitch should go to zero.

* **Pitch Amount**: How much pitch to add with each shot.

* **Up Interp Speed**: Smoothing up speed.

* **Up Damping**: How fast the up translation should go to zero.

* **Up Amount**: How much up translation to add with each shot.

* **Ads Scale**: Multiplier applied when aiming.

### Sway

**Recoil Sway** simulates arm offset when firing:

<Frame caption={"Sway properties."}>
  <img src="https://mintcdn.com/kinemation/2P0DGfZe1PbAUTxl/images/tactical-shooter-pack/unreal/cb2966d59efd97410c56.png?fit=max&auto=format&n=2P0DGfZe1PbAUTxl&q=85&s=878c591fbcf243fb5d0b60837d89bad3" alt="" width={509} data-path="images/tactical-shooter-pack/unreal/cb2966d59efd97410c56.png" />
</Frame>

* **Pitch Sway**: A value from this range will be added to the pitch sway.

* **Yaw Sway**: A value from this range will be added to the yaw sway.

* **Roll Sway Multiplier**: Roll will be computed by multiplying the pitch sway with this value.

* **Damping**: How fast the sway should go to zero.

* **Interp Speed**: Sway smoothing speed.

* **Ads Scale**: Multiplier applied when aiming.

* **Pivot Offset**: Virtual pivot to add translation. Recommended **X = 30-40** units so the pivot is near the character’s shoulder.

### General

<Frame caption={"General recoil properties."}>
  <img src="https://mintcdn.com/kinemation/2P0DGfZe1PbAUTxl/images/tactical-shooter-pack/unreal/de84a6fd4c38cd9e64df.png?fit=max&auto=format&n=2P0DGfZe1PbAUTxl&q=85&s=c20049027ccb2b4801e724d43b441f54" alt="" width={503} data-path="images/tactical-shooter-pack/unreal/de84a6fd4c38cd9e64df.png" />
</Frame>

<Tip>
  **Tip**: Pivot Offsets apply recoil as if the weapon rotates around a point in world space. For example, with `(-30, 0, 0)`, recoil appears to pivot around the gun offset by that amount.
</Tip>

* **Space Rotation**: Use only if animations have a different root orientation.

* **Play rate**: Playback speed multiplier.

**Playback Offset** applies only to burst or auto fire modes. In these modes, recoil animation length equals the fire delay (`60 / FireRate`). **Playback Offset** adjusts that length to make the sequence longer or shorter.

### Curves

Recoil animation is curve‑driven. The solver uses **Vector Curves** for single and auto/burst fire modes:

<Frame caption={"Recoil curves."}>
  <img src="https://mintcdn.com/kinemation/gs-VS6eri6gRdFbg/images/tactical-shooter-pack/unreal/fbc58488a5d0dc3501c1.png?fit=max&auto=format&n=gs-VS6eri6gRdFbg&q=85&s=02fcc212273831d443fd947bc9e7e2cc" alt="" width={367} data-path="images/tactical-shooter-pack/unreal/fbc58488a5d0dc3501c1.png" />
</Frame>

<Tip>
  **Tip**: For single‑fire‑only weapons, set **AutoRot** and **AutoLoc** to **None**.How to get recoil values
</Tip>

To get recoil values, access the `FTransform RecoilAnimation` property:

<Frame caption={"Recoil value."}>
  <img src="https://mintcdn.com/kinemation/2P0DGfZe1PbAUTxl/images/tactical-shooter-pack/unreal/351ad51a4e40876c3faa.png?fit=max&auto=format&n=2P0DGfZe1PbAUTxl&q=85&s=e911ca69c4a52b127e4a330464b470e0" alt="" width={363} data-path="images/tactical-shooter-pack/unreal/351ad51a4e40876c3faa.png" />
</Frame>

<Tip>
  **Tip**: For example, plug this value into a **Transform (Modify) Bone** node in the Animation Blueprint.
</Tip>

<Frame caption={"How recoil is applied in the Tactial Shooter Pack."}>
  <img src="https://mintcdn.com/kinemation/2P0DGfZe1PbAUTxl/images/tactical-shooter-pack/unreal/8dc784a9860ea0cd651c.png?fit=max&auto=format&n=2P0DGfZe1PbAUTxl&q=85&s=515f159414e31be7e725c7bf1f8c40f7" alt="" width={533} data-path="images/tactical-shooter-pack/unreal/8dc784a9860ea0cd651c.png" />
</Frame>
