> For the complete documentation index, see [llms.txt](https://dmitriy-vergasov.gitbook.io/pro-aim-assist/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://dmitriy-vergasov.gitbook.io/pro-aim-assist/main-setup.md).

# Main Setup

{% embed url="<https://www.youtube.com/watch?v=XO9XBnUu5fs>" %}

Pro Aim Assist - solution, based on systems used in most AAA shooter games to provide comfortable  shooting for users on consoles, PC and mobile devices. It contains 4 subsystems with  many customizable parameters.&#x20;

Main Features:

* Use C++ or Blueprints to work with system
* Easy to setup on any actor
* Aim zones based on mesh sockets
* 4 subsystems for your perfect shooting mechanics
* Stickiness - Sight slowdown when aiming at an enemy based on curves
* Magnetism - In zone the bullet will directed into the enemy
* Auto Aim - auto camera movement to visible target zone with many parameters
* Zones scaling based on distance to target
* Example project based on Advanced Locomotion System

#### [Marketplace](https://www.unrealengine.com/marketplace/en-US/product/23b74dcd4fd84a968c21a67f3a4be0d6)

#### [Example Project](https://drive.google.com/drive/folders/1wP__0k1WDHVyn1W5nLLrcbJhKFID79Ja?usp=sharing)

#### [Playable Demo](https://drive.google.com/drive/folders/1M92WDM0u79oxnQtoFW_w0rxYIwzs1HJn?usp=sharing)

## Components Setup

{% hint style="danger" %}
To use Stickiness system enable Enhanced Input plugin
{% endhint %}

### PlayerController

#### Add **UASAimAssistComponent** to your player controller

![](/files/Rugbo7hReMRYV3TGdBIj)

#### Create aim assist DataAsset from UASAimAssistConfigDataAsset

<div align="left"><img src="/files/Fn72FWFzKen1hHBKloUo" alt=""></div>

#### Add created DA in component

Also you can make it during gameplay&#x20;

![](/files/xrJG29ilbrQKzVYfrJ3P)

#### Setup collision profile names for targets detection and obstacles check

![](/files/R2MaqAzh444CDJ3G7ng5)\
![](/files/aahPDsq8NWS4aQgyHTId)\
![](/files/gQIRjqIVhmJt7hQI5su0)

### Target Setup

#### Add UASAimAssistTargetComponent to your target actor or character

#### On BeginPlay set mesh

![](/files/E0EKG7XdPS7AyICYjNvX)

#### Setup socket names for aiming

<div align="left"><img src="/files/YQmuquz4k3mD1Y0NhUJ4" alt=""></div>

## UASAimAssistConfigDataAsset&#x20;

![](/files/mUjbllsc8rgo6JEiXcuS)

#### UpdateTargetsRate&#x20;

Rate to update targets in visible area

#### AimAreaExtents

Extents for box trace from camera to determine aim assist target

### Stickiness

{% hint style="danger" %}
To use this system enable Enhanced Input plugin
{% endhint %}

![](/files/NCaj5QkSB6zusjNWsxvB)

![](/files/kBRuiBRkguvbMCOSfZ8S)

In stickiness area your view input will be slow down by the curve value for pitch and yaw axes

Key for curve - screen distance ratio from screen center to edge of circle. From 0 to 1

&#x20;

<div align="left"><img src="/files/yOm0WJdEZZ9lxiQUCiyr" alt=""></div>

By default this system works with Enhanced Input. To use it just add modifier **BP\_InputModifier\_ControlStickiness** to your input

![](/files/ftuF0Bjx43eFHVeATRV6)

But, if you are using the legacy input system - just multiply your inputs with this values from ASAimAssistComponent

<div align="left"><img src="/files/phQyfk8klatbd43Qo2Ml" alt=""></div>

### Magnetism

This system allow to shoot in nearest target (socket) in the radius

![](/files/2g0adxX127GEOsTpXOE6)

It has 2 circles.

In the start circle crosshair will be directed to nearest target, but it will be clamped by aim zone radius.&#x20;

i.e.  in the start radius you still be miss to target, but bullets will be directed closer to target

![](/files/O8QZJij0JswqgdeDsGRn)

![](/files/5SgPwaeFjK0ubctujZKb)

You can get direction to current crosshair location by this node.&#x20;

Trace profile name uses for cases if target out of magnetism zone and you need to shoot in nearest object front of camera.

From - your "muzzle" location.

### Auto Aim

It system allow to shift your control view to target

&#x20;

![](/files/cCJZHNetPciXeWb47z31)

#### Speed&#x20;

Interpolation speed. From current control rotation to nearest target location

#### Auto Aim Zone Radius

Radius of circle. Auto aim will be active in this zone

#### Activation Distance

Distance to target's actor to activate auto aim

#### TimeWithoutCameraInputToEnableAutoAim

The time that must pass from last camera input to enable auto aim

#### TimeWithMovementInputToEnableAutoAim

The time that must pass with movement input to enable auto aim

#### bUseOnlyWithInactiveMagnetism

If true - auto aim will be working only if target out of magnetism circle

#### TimeToBlockAfterChangeTarget

After target actor changing auto aim will be blocked on this time

### Zones Scaling

<div align="left"><img src="/files/Sjg1oCvc8n62dWaQoxxn" alt=""></div>

You can scale your system zones by this curve. Key - distance to target actor. Value - scaling multiplier

## Debug and other notes

* In AimAssist component you can enable or disable debug for each system<br>

![](/files/koIwMd9TEIc1aciVzfQK)

* You can enalbe/Disable each system from setting from data asset or from AimAssistComponent by functions:<br>

<div align="left"><img src="/files/u5su8H9Z6wmzbUeJ1InA" alt=""></div>
