> 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

![](https://735416403-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FF3k8Ag7XdLaFeHKiXdml%2Fuploads%2FdoDPDe25Q4ChAqrDnjmY%2Fimage.png?alt=media\&token=8bf19a64-4a60-4a44-a3be-b9ac767b04df)

#### Create aim assist DataAsset from UASAimAssistConfigDataAsset

<div align="left"><img src="https://735416403-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FF3k8Ag7XdLaFeHKiXdml%2Fuploads%2FxjXNYr96cphZmgg3HVwv%2Fimage.png?alt=media&amp;token=075b0e21-299b-4422-89bd-136dab509a6b" alt=""></div>

#### Add created DA in component

Also you can make it during gameplay&#x20;

![](https://735416403-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FF3k8Ag7XdLaFeHKiXdml%2Fuploads%2F3hphpT0Mzvgamz0dBle6%2Fimage.png?alt=media\&token=433de039-3ad6-4db4-a250-5a8eb083a95e)

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

![](https://735416403-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FF3k8Ag7XdLaFeHKiXdml%2Fuploads%2FpnjiPzAZXrHjfWQuXHI4%2Fimage.png?alt=media\&token=8463be30-0ec5-4829-bc30-461601aedaa0)\
![](https://735416403-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FF3k8Ag7XdLaFeHKiXdml%2Fuploads%2Fi2jF1rNk7MrKqgdgxycL%2Fimage.png?alt=media\&token=7cf92d8c-676b-4631-8cff-06ff663d79c9)\
![](https://735416403-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FF3k8Ag7XdLaFeHKiXdml%2Fuploads%2FCIZA6TmsFigVUawSBM5L%2Fimage.png?alt=media\&token=490d2d74-f91b-4c6f-8e47-7f3cd5f7ada6)

### Target Setup

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

#### On BeginPlay set mesh

![](https://735416403-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FF3k8Ag7XdLaFeHKiXdml%2Fuploads%2FdFtHMvWqx65b2vOfEcsj%2Fimage.png?alt=media\&token=dabc7f80-7e56-4e4a-a715-a9cdee175c2a)

#### Setup socket names for aiming

<div align="left"><img src="https://735416403-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FF3k8Ag7XdLaFeHKiXdml%2Fuploads%2FTtzVWAS3E793mFK9Hq1W%2Fimage.png?alt=media&amp;token=f2b6e32a-3081-4634-886b-159c57eeb542" alt=""></div>

## UASAimAssistConfigDataAsset&#x20;

![](https://735416403-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FF3k8Ag7XdLaFeHKiXdml%2Fuploads%2FNL2jKwgU9g1h2wKrU0kc%2Fimage.png?alt=media\&token=a148f525-1325-4a59-a680-b254c1756e0b)

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

![](https://735416403-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FF3k8Ag7XdLaFeHKiXdml%2Fuploads%2FobKYpmaf0D6B6I7kIghw%2Fimage.png?alt=media\&token=62bb947c-0654-47fd-b22a-1c34b888a3e6)

![](https://735416403-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FF3k8Ag7XdLaFeHKiXdml%2Fuploads%2Fov0A0Uv53FZ1lDClOKj2%2Fimage.png?alt=media\&token=e9ccbb1e-0bf3-4f27-9de5-77604e7034bf)

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="https://735416403-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FF3k8Ag7XdLaFeHKiXdml%2Fuploads%2F3vRWkWRN0yJDZhKhNJv9%2Fimage.png?alt=media&amp;token=5a0dcd79-973f-486e-94da-2a1823322205" alt=""></div>

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

![](https://735416403-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FF3k8Ag7XdLaFeHKiXdml%2Fuploads%2FLityjXdeubx0Yzzmbmku%2Fimage.png?alt=media\&token=e8672213-0cf5-467d-9f64-a69086eb49cc)

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

<div align="left"><img src="https://735416403-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FF3k8Ag7XdLaFeHKiXdml%2Fuploads%2FGf6LOOF8GAcJnxF8nZxF%2Fimage.png?alt=media&amp;token=685a0fae-93ed-4626-a005-2c3cf5f7d570" alt=""></div>

### Magnetism

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

![](https://735416403-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FF3k8Ag7XdLaFeHKiXdml%2Fuploads%2FXRTOgEEdqiyfIpBx8jxN%2Fimage.png?alt=media\&token=de58ed05-0f0e-4889-8b34-6daef5ac5464)

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

![](https://735416403-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FF3k8Ag7XdLaFeHKiXdml%2Fuploads%2F90q0hWjYOGLkUu3AcBho%2Fimage.png?alt=media\&token=ccbad8d4-6e54-444c-a631-f353b00c360a)

![](https://735416403-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FF3k8Ag7XdLaFeHKiXdml%2Fuploads%2F6ARd7u6Vp1mQd9fYbz5X%2Fimage.png?alt=media\&token=f717c961-fbee-4179-b85a-acb9e837bae6)

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;

![](https://735416403-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FF3k8Ag7XdLaFeHKiXdml%2Fuploads%2FOsdRf3PKmKV2vhfp6k29%2Fimage.png?alt=media\&token=5eecbec4-2d5e-4241-958f-60b03d568c0b)

#### 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="https://735416403-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FF3k8Ag7XdLaFeHKiXdml%2Fuploads%2FwYiC7SlAfkrOLmxhV0Lg%2Fimage.png?alt=media&amp;token=05689e61-a18c-46c6-907e-486211047a46" 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>

![](https://735416403-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FF3k8Ag7XdLaFeHKiXdml%2Fuploads%2FWllKvucVy6oNMetOeVDN%2Fimage.png?alt=media\&token=9190554d-2866-447d-a54d-b228f3880b14)

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

<div align="left"><img src="https://735416403-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FF3k8Ag7XdLaFeHKiXdml%2Fuploads%2FYLqqxb4HbWwovnVFFrV4%2Fimage.png?alt=media&amp;token=c1c25137-c526-46ba-ab56-a095074d9014" alt=""></div>
