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

# ⚙️Recoil Settings

> In this section we will cover all recoil-related properties.

All settings are located in the **Recoil Data** asset (to create one, right-click and go **Miscellaneous -> Data Asset -> Recoil Data**). This asset contains many sections, and we will cover them one by one.

## Controller Recoil

<Frame caption={"Controller Recoil."}>
  <img src="https://mintcdn.com/kinemation/iFeSeTR8-9oVWKko/images/pras/8c893f9c5a37ba700b32.png?fit=max&auto=format&n=iFeSeTR8-9oVWKko&q=85&s=2fb056edb77efbe05be9400f72715925" alt="" width={427} data-path="images/pras/8c893f9c5a37ba700b32.png" />
</Frame>

* **Horizontal Recoil Step**: a value will be computed in this range and added to the controller Yaw.

* **Vertical Recoil Step**: a value will be computed in this range and added to the controller Pitch.

* **Recoil Smoothing**: interpolation speed for X (Yaw) and Y (Pitch).

* **Damping**: how fast the both Pitch and Yaw will go to zero,

* **Compensation**: how much player input to take into account. 1 - 100%, 0 - 0%.

**Controller Recoil** is added directly to the **Player Controller** using *AddPitchInput* and *AddYawInput* methods.

## Curve

This section contains curves that we covered in the previous chapter:

<Frame caption={"Vector curves for translation and rotation,"}>
  <img src="https://mintcdn.com/kinemation/iFeSeTR8-9oVWKko/images/pras/74b26208a52d1ff8d5c7.png?fit=max&auto=format&n=iFeSeTR8-9oVWKko&q=85&s=3e1e0f90b8e55047c96238dec709ef32" alt="" width={383} data-path="images/pras/74b26208a52d1ff8d5c7.png" />
</Frame>

## Input

These properties generate main target recoil values:

<Frame caption={"Input properties."}>
  <img src="https://mintcdn.com/kinemation/iFeSeTR8-9oVWKko/images/pras/9f373c70a802821c56af.png?fit=max&auto=format&n=iFeSeTR8-9oVWKko&q=85&s=eec98d7818259fe2868384ac7475c9b3" alt="" width={563} data-path="images/pras/9f373c70a802821c56af.png" />
</Frame>

* **Pitch/Yaw/Roll Aim**: a value will be generated in this range and added to the pitch/yaw/roll when aiming.

* **Pitch/Yaw/Roll**: a value will be generated in this range and added to the pitch/yaw/roll when hip firing.

* **Kick/Kick R/ Kick Up Aim**: a value will be generated in this range and added in the forward/right/up direction when aiming.

* **Kick/Kick R/ Kick Up**: a value will be generated in this range and added in the forward/right/up direction when aiming.

It's worth noting how the random generation happens in runtime:

* For 2D vectors, it will compute a value via FRandRange(X, Y)

* For 4D vectors, it will compute a value via FRandRange(FRandRange(X, Y), FRandRange(Z, W)). We do it this way to avoid getting close-to-zero values, which sometimes look horrible.

## Smoothing

This group is only applied when auto/burst firing.

<Frame caption={"Smoothing properties."}>
  <img src="https://mintcdn.com/kinemation/MwuYlII5X7NMKvR6/images/pras/3318b92a41f9106f42a3.png?fit=max&auto=format&n=MwuYlII5X7NMKvR6&q=85&s=7de07baa69d1c2d2f3e0f6bb06e77036" alt="" width={476} data-path="images/pras/3318b92a41f9106f42a3.png" />
</Frame>

* **Smooth Rot/Loc**: interpolation speed for a rotation/translation axis. If the value is zero - no interpolation will be applied.

* **Multi Rot/Loc**: multipliers for a rotation/translation axis.

* **Smooth Roll**: if roll sign should change every shot. Keep it true to achieve the best results.

## Noise Layer

This layer applies translation 2D noise in the YZ plane (right and up movement).

<Frame caption={"Noise properties."}>
  <img src="https://mintcdn.com/kinemation/MwuYlII5X7NMKvR6/images/pras/1ff3f4fb9c8e90b6dffe.png?fit=max&auto=format&n=MwuYlII5X7NMKvR6&q=85&s=f42b40c4c9240d840fc7aec50b3d80e8" alt="" width={416} data-path="images/pras/1ff3f4fb9c8e90b6dffe.png" />
</Frame>

* **Noise 2DTarget**: this value will be added to the translation of every shot.

* **Noise 2DAccel**: interpolation speed for right and up axes.

* **Noise 2DZero**: how fast each axis will go to zero.

* **Noise Aim Scalar**: multiplier applied when aiming.

## Pushback

This layer is applied on the second shot of a burst or auto sequence.

<Frame caption={"Pushback properties."}>
  <img src="https://mintcdn.com/kinemation/MwuYlII5X7NMKvR6/images/pras/030d8cf696150c3532b9.png?fit=max&auto=format&n=MwuYlII5X7NMKvR6&q=85&s=22778e63b5856862d2d59f6a6debc925" alt="" width={305} data-path="images/pras/030d8cf696150c3532b9.png" />
</Frame>

* **Pushback**: this value will be added to the forward translation.

* **Pushback Zero**: how fast the pushback should go to zero.

* **Pushback Accel**: pusback interpolation speed.

## Recoil Sway

This layer applies sway to simulate a body recoil.

<Frame caption={"Recoil Sway properties."}>
  <img src="https://mintcdn.com/kinemation/iFeSeTR8-9oVWKko/images/pras/51e2988ad328cdf5fcb0.png?fit=max&auto=format&n=iFeSeTR8-9oVWKko&q=85&s=045a9eb0f4699ce41c07a0926e6236b5" alt="" width={533} data-path="images/pras/51e2988ad328cdf5fcb0.png" />
</Frame>

* **Pitch Sway**: a value will be randomly generated in this range and added to the pitch.

* **Yaw Sway**: a value will be randomly generated in this range and added to the yaw.

* **Roll Sway Multiplier**: will multiply the yaw result by this value and add it to the roll.

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

* **Acceleration**: interpolation sway speed.

* **Ads Scale**: this value will scale the recoil sway when aiming.

* **Pivot Offset**: will offset the recoil physical pivot.

## Timeline

These properties control the general animation timeline.

<Frame caption={"Tineline properties."}>
  <img src="https://mintcdn.com/kinemation/iFeSeTR8-9oVWKko/images/pras/c9d9cf75de4cabd51bb1.png?fit=max&auto=format&n=iFeSeTR8-9oVWKko&q=85&s=3714a3860f87392f442d00233fd7337a" alt="" width={291} data-path="images/pras/c9d9cf75de4cabd51bb1.png" />
</Frame>

* **Playback Offset**: will offset the loop time interval. For example, if a weapon fire rate is 600RPM, the loop interval will be 0.1s + Playback Offset.

* **Play Rate**: animation speed multiplier.

## Pivot

This section controls the physical recoil pivot point.

<Frame caption={"Pivot settings."}>
  <img src="https://mintcdn.com/kinemation/iFeSeTR8-9oVWKko/images/pras/4b987cf4b9d99c8541b6.png?fit=max&auto=format&n=iFeSeTR8-9oVWKko&q=85&s=ecc8c0ec3757e4e48958c9aeb170c99d" alt="" width={522} data-path="images/pras/4b987cf4b9d99c8541b6.png" />
</Frame>

* **Pivot Offset**: applied when hip firing.

* **Ads Pivot Offset**: applied when aiming.

<Tip>
  **Tip**: pivot offsets can be useful when we want to apply recoil rotation around a certain point, like a shoulder.
</Tip>
