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


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://dmitriy-vergasov.gitbook.io/pro-aim-assist/main-setup.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
