Recoil Settings
In this section we will cover all recoil-related properties.
Last updated
In this section we will cover all recoil-related properties.
Last updated
All settings are located in the Recoil Data asset (to create one, right-click and go Miscallenneous -> Data Asset -> Recoil Data). This asset contains many sections, and we will cover them one by one.
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.
This section contains curves that we covered in the previous chapter:
These properties generate main target recoil values:
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.
This group is only applied when auto/burst firing.
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.
This layer applies translation 2D noise in the YZ plane (right and up movement).
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.
This layer is applied on the second shot of a burst or auto sequence.
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.
This layer applies sway to simulate a body recoil.
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.
These properties control the general animation timeline.
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.
This section controls the physical recoil pivot point.
Pivot Offset: applied when hip firing.
Ads Pivot Offset: applied when aiming.
Tip: pivot offsets can be useful when we want to apply recoil rotation around a certain point, like a shoulder.