# Welcome

Documentation for the 1.7.5 version

Hello! Here you can see the detailed documentation for the Universal Shooter Kit. If you have any questions, feel free to write on the [**Forum**](https://forum.unity.com/threads/v-1-6-1universal-shooter-kit-fps-tps-tds.596497/#post-3986848), [**Discord server**](https://bit.ly/gs-discord), or by email: [**gercstudio@gmail.com**](mailto:gercstudio@gmail.com?subject=Universal%20Shooter%20Kit%20-%20Question%20) 🙂

![](/files/YWSIH5P79LbpNKlRuCuT)

## Tips

{% hint style="info" %}
To find out which USK version you're using open the info menu by pressing

<mark style="color:orange;">**(Tools -> USK -> About)**</mark>.

<img src="/files/MFG8XAJ2pjKCyFFcvwSl" alt="" data-size="original">
{% endhint %}

{% hint style="info" %}
If you see a variable with this **°** symbol, hover over it to see a tooltip.

<img src="/files/xmS0lUdQtnVHrkJyW5zi" alt="" data-size="original">
{% endhint %}


# Installation

* Firstly, you need to import and activate the new Unity Input System.

{% content-ref url="/pages/v6yiC3A3Wd093CpELQ2k" %}
[Input System](/project-settings/input-system)
{% endcontent-ref %}

* Then, download and import the kit through the Unity Package Manager.

![](/files/f9DFiUOIQzbS2zgDAjOM)

* If you have already imported the input system before, you can skip this step.

![](/files/FfUaoNk2JLCwCMYyluMm)

* You only need to import **NavMeshAreas** settings, all other necessary components will be added automatically.

![](/files/KKsz0M7oswNn9y3bHkhy)


# Project Overview

The project has 2 main folders - **Framework** and **Demos**.

![](/files/IcQMbhID6yFhASYlFGYI)

* By deleting the **Framework** folder, you delete the entire system.&#x20;
* You can safely delete the **Demo** folder. But keep in mind that this folder contains components that you may need in the future (animations, sounds, effects, etc).
* After you create weapons, characters, or opponents, another folder called **Prefabs** will appear there.

In the **Demo** folder, you will find several demo scenes for **single-player** and **multiplayer** games, as well as for various **integrations**.

![](/files/iUDuPcXHgfAkITpsjpha)


# Get Started

The main information on how to interact wit the kit.

If you want to upgrade from the previous 1.6.5 version, check out the guide below.

{% content-ref url="/pages/uJi6J31E3p0CtBycWJr4" %}
[Migration Guide](/migration-guide)
{% endcontent-ref %}

There are several <mark style="color:green;">**video tutorials**</mark> in various places in this documentation, but you can also find all of them in one section.

{% content-ref url="/pages/cB4Twfw0oRN9ZbrqhgCA" %}
[Video Guides](/additional-info/video-guides)
{% endcontent-ref %}

Use these tools to customize <mark style="color:green;">**UI**</mark> and <mark style="color:green;">**Input**</mark>.

{% content-ref url="/pages/ADmv6XVxqn6DHYueZGsa" %}
[UI Manager](/project-settings/ui-manager)
{% endcontent-ref %}

{% content-ref url="/pages/v6yiC3A3Wd093CpELQ2k" %}
[Input System](/project-settings/input-system)
{% endcontent-ref %}

Learn more about creating <mark style="color:green;">**characters**</mark>, <mark style="color:green;">**weapons**</mark>, and <mark style="color:green;">**AI opponents**</mark> in these sections:

{% content-ref url="/pages/-LfFSm0u6QCiYflJehId" %}
[Characters](/characters/overview)
{% endcontent-ref %}

{% content-ref url="/pages/-LfFSwlgNa9rMCudZYXE" %}
[Weapons](/weapons/overview)
{% endcontent-ref %}

{% content-ref url="/pages/-LfFT66NtliS6B8GtE9B" %}
[AI Opponents](/enemies/overview)
{% endcontent-ref %}

Click below to understand the main direction of <mark style="color:green;">**creating a single-player game**</mark>.

{% content-ref url="/pages/-Lr1FjH86t9KZtMZHyoT" %}
[Single-player Game Creation](/single-player/creation)
{% endcontent-ref %}

The basics of <mark style="color:green;">**creating a multiplayer game**</mark>.

{% content-ref url="/pages/-LfFT9F9dR4Y5rdsGgms" %}
[Multiplayer Game Creation](/multiplayer/overview)
{% endcontent-ref %}

If you're going to develop a game for smartphones, you should know how to enable <mark style="color:green;">**mobile**</mark> <mark style="color:green;">**input**</mark>.

{% content-ref url="/pages/-LfFTCNZSIw1RoRWF7p4" %}
[Mobile Control](/mobile-version/activation)
{% endcontent-ref %}

To enable the <mark style="color:green;">**Save Sytem**</mark> in your game, use the <mark style="color:green;">**Save Manager**</mark>.

{% content-ref url="/pages/lz5NVdzmml94Y6bhQWJd" %}
[Save Manager](/other-components/save-manager)
{% endcontent-ref %}

To work with integrations use the <mark style="color:green;">**Integrations Manager**</mark>.

{% content-ref url="/pages/Mbp1D0B32cFYVuky1Pml" %}
[Integrations Manager](/integrations-manager/overview)
{% endcontent-ref %}

Here you will find information about <mark style="color:green;">**other systems**</mark> that can be used in all game modes.

{% content-ref url="/pages/-M61R2ci0lZdahSflUW3" %}
[Spawn Zones](/other-components/spawn-zones)
{% endcontent-ref %}

{% content-ref url="/pages/-MIycHdvueDGthMQ\_Fmy" %}
[Minimaps](/other-components/minimaps)
{% endcontent-ref %}

{% content-ref url="/pages/-LfFYOlPtoEsVUF9uumA" %}
[Surfaces](/other-components/surfaces)
{% endcontent-ref %}

{% content-ref url="/pages/-LfMgBYllOYQbnyAzw0N" %}
[Pickup Items](/other-components/pickup-items)
{% endcontent-ref %}

To learn how to update the kit for use in your <mark style="color:green;">**URP / HDRP**</mark> project and how to add <mark style="color:green;">**post-processing effects**</mark>, see the section below

{% content-ref url="/pages/BOlgrvpA2GM0CsLqucIq" %}
[Render Pipelines](/render-pipelines/project-update)
{% endcontent-ref %}

If you have an issue with the kit, you can probably find an answer in the <mark style="color:green;">**FAQ**</mark>.

{% content-ref url="/pages/-LrW-m5MqICcE3QTA3ts" %}
[FAQ](/additional-info/questions)
{% endcontent-ref %}


# Migration Guide

From the 1.6.5 to 1.7 version

{% hint style="success" %}
**Back up your project before upgrading!**
{% endhint %}

The new version has changed the multiplayer mode. Therefore, if you are developing competitive multiplayer, then do not update to the new version, you should wait for the Advanced Multiplayer add-on to be released.

Also, if you didn't work much with the 1.6.5 version, then it's better to install the new 1.7 release into an empty project.

But if you've already done a lot of work in the 1.6.5 release, follow these steps:

* Delete all USK tools, leaving only the following folders and your things

![](/files/V9sV4ijp0lYXrLSMMz8R)

* Import the new version (following the [installation manua](/installation)l)
* If you used AI opponents, you need to set up the scene using new tools.

{% content-ref url="/pages/-LzqmNXQZBNmxB5RRHgA" %}
[Adding to the Game](/enemies/adding-to-the-game)
{% endcontent-ref %}

* In some cases, you'll need to set some parameters in scripts again (spawn points, effects, animations, etc)

{% hint style="success" %}
If you have any problems, please contact us - **<gercstudio@gmail.com>**
{% endhint %}


# Input System

USK uses the **new** **Unity Input System**. This makes it easy to access different input devices as well as use one input map for any gamepads.

### Activation

To enable that system do the following:

* Make sure there's an **Input System package** in your project. If it's missing, download it from the **Unity Package Manager**.

![](/files/SWL8mvaDaKqMt6RY0HoI)

* After the package is installed, set the **Active Input Handling** to **Both** <mark style="color:orange;">(Edit -> Project Settings -> Player)</mark>.

![](/files/cw9NO0LeYMznEoqvLY7S)

### Using

After activating the Input System, you can customize the input map using the USK tools.

#### Keyboard, Mouse, Gamepads

To customize all input methods, open the <mark style="color:green;">**Input Manager**</mark> by pressing <mark style="color:orange;">**(Tools -> USK -> Project Settings)**</mark> or use the <mark style="color:orange;">**Shift+I**</mark> hotkey.

![](/files/UVTdn4jvutpbuMOMNYf8)

Common button names are used for the gamepad input map. This allows you to set the buttons once and they will work on all controllers (for example, Xbox and PlayStation).

![](/files/4DIRJ0bMxj4GEEpUkwND)

#### Mobile

To adjust mobile buttons, open the <mark style="color:green;">**UI Manager**</mark> by pressing <mark style="color:orange;">**(Tools -> USK -> UI Manager)**</mark>.

![](/files/qZ9E07lK7wMquqhOCY2Y)


# UI Manager

The UI Manager contains the entire user interface for all game modes. To open it press the <mark style="color:orange;">**(Tools -> USK -> Project Settings -> UI Manager)**</mark> or use the <mark style="color:orange;">**Shift+U**</mark> hotkey.

* All UI elements are divided into groups to make it easier for you to interact with them.

![](/files/x92HKK88GiDHfLq47fFB)

* When you open a section, the entire UI of that group is activated.&#x20;

![](/files/34SJSnUAFKmG54k77YyS)

{% hint style="warning" %}
**Please note:** don't delete or move the path items that are written in caps (for example, **CHARACTER UI / GAME UI**), but you can safely move and delete everything else.
{% endhint %}

* During the game, when UI elements appear on the screen, then the corresponding menu opens in the UI Manager prefab (which is located in your game scene).

![](/files/zFSHE0rr38ojLA9VHVSW)


# Overview

First, you need to **create** **a character** and then **adjust** it.

{% content-ref url="/pages/-LfFSm0vIEhwaJFKa7l\_" %}
[Creation](/characters/creation)
{% endcontent-ref %}

{% content-ref url="/pages/-LfFUwj67py39OfIQfKl" %}
[Adjustment](/characters/character-adjustment)
{% endcontent-ref %}

Next, **set up the camera** - select the modes you need, adjust the sensitivity, and other parameters.

{% content-ref url="/pages/-LfFV7E1nP8lirDx\_X2e" %}
[Camera](/characters/camera)
{% endcontent-ref %}

To add weapons to your character, you should use the <mark style="color:green;">**Inventory Manager**</mark> component.

{% content-ref url="/pages/-Lr1ANF\_95xr0fePxB9e" %}
[Inventory Manager](/characters/inventory-manager)
{% endcontent-ref %}

To **add a fist attack** see the section below.

{% content-ref url="/pages/-LzsPAmjMJg66RDl-mHU" %}
[Fists Attack](/characters/inventory-manager/melee-attacks-with-fists)
{% endcontent-ref %}

If you need to use the same weapon with different characters, create a unique **tag** for each character for future use.

{% content-ref url="/pages/-Lr1CKyPHt9938NwMnaz" %}
[Tags](/characters/controller/tags)
{% endcontent-ref %}

If you need to configure other parameters, you can find information in the appropriate section.

{% content-ref url="/pages/-LrG2q9j\_Xf2bDC11B75" %}
[Movement](/characters/controller/locomotion)
{% endcontent-ref %}

{% content-ref url="/pages/-M66OOoMmIYRa3oFSUWi" %}
[Health](/characters/controller/health)
{% endcontent-ref %}

{% content-ref url="/pages/-LzsVnbJsS\_zhkpGiKRf" %}
[Noise](/characters/controller/noise)
{% endcontent-ref %}


# Creation

To create a character do the following:

1. Open the creation tool <mark style="color:orange;">**(Tools -> USK -> Create -> Character)**</mark>
2. Place a character model and press the <mark style="color:green;">**\[Create]**</mark> button

{% embed url="<https://youtu.be/4fslw6zb24I>" %}

#### **Now let's adjust it:**

{% content-ref url="/pages/-LfFUwj67py39OfIQfKl" %}
[Adjustment](/characters/character-adjustment)
{% endcontent-ref %}


# Adjustment

All characters have different bones, different rotations of body parts, and so on. Therefore, USK has adjustment tools that will help you make any model work correctly.

First of all, open the adjustment scene <mark style="color:orange;">**(Tools -> USK -> Adjust)**</mark>*,* then place a character or a few characters to the <mark style="color:green;">**Adjustment**</mark> script and press the <mark style="color:green;">**\[Play]**</mark> button.

{% embed url="<https://youtu.be/-nVb0RWjHGg>" %}

* To change the camera type, press the <mark style="color:orange;">**\[C]**</mark> button.

![](/files/-M8jydd6OFDCifs83q5s)

* You can switch between characters during the adjustment.

![](/files/-M8k-aTf17Bk2CCOGW4-)

**Read about the further adjustment there:**

{% content-ref url="/pages/-Lr9C9pojv80VLt1LYAT" %}
[Character](/characters/character-adjustment/character)
{% endcontent-ref %}

{% content-ref url="/pages/-Lr9CDv7Odm4KR2fqVUF" %}
[Camera](/characters/character-adjustment/camera)
{% endcontent-ref %}


# Character

### Hands Orientation

Make sure the <mark style="color:green;">**green**</mark> and <mark style="color:yellow;">**yellow**</mark> arrows are positioned correctly to ensure that the character's hands work correctly in the game.

![](/files/sVaSqDjt8pILu0oTHSrp)

### Body Orientation

#### Third Person & Top Down

To ensure that the body rotates correctly in the game, make sure that the <mark style="color:blue;">**blue arrow**</mark> <mark style="color:blue;">**looks forward**</mark> and the <mark style="color:red;">**red arrow - right**</mark>.

![](/files/-M8l2YAl79F4Jp5AJlhV)

#### First Person

If the character's body has a rotation error, change offset parameters to fix it.

![](/files/-M8l5Nteior5StkP84Hm)


# Camera

#### Third Person view

Change parameters to adjust the camera position for normal and aim views.

![](/files/-M8k3JVxQTorCq6ozOxK)

#### First Person view

Rotate and move the <mark style="color:yellow;">**yellow arrow**</mark> <mark style="color:yellow;"></mark><mark style="color:yellow;">(FP Camera Position & Rotation object)</mark> to adjust the FP camera.

![](/files/-M8k6d9Tf4STBJeIBbiJ)

#### Top Down

Adjust the camera position offset and angle.&#x20;

{% hint style="info" %}
You can adjust the parameters for the 2 modes separately (read about modes differences [here](/characters/camera/top-down)).
{% endhint %}

![](/files/-M8k98wXCmRNG0wGu7av)


# Controller

The <mark style="color:green;">**Controller**</mark> is the main component of the character, which is responsible for all his actions. Below you will find more information about all the elements of this component.

{% content-ref url="/pages/-LfFV7E1nP8lirDx\_X2e" %}
[Camera](/characters/camera)
{% endcontent-ref %}

{% content-ref url="/pages/-LrG2q9j\_Xf2bDC11B75" %}
[Movement](/characters/controller/locomotion)
{% endcontent-ref %}

{% content-ref url="/pages/-M66OOoMmIYRa3oFSUWi" %}
[Health](/characters/controller/health)
{% endcontent-ref %}

{% content-ref url="/pages/-Lr1CKyPHt9938NwMnaz" %}
[Tags](/characters/controller/tags)
{% endcontent-ref %}

{% content-ref url="/pages/-LzsVnbJsS\_zhkpGiKRf" %}
[Noise](/characters/controller/noise)
{% endcontent-ref %}

{% content-ref url="/pages/Ph1R8PFr8mj6XIsz36rW" %}
[Multiplayer](/characters/multiplayer)
{% endcontent-ref %}


# Movement

Depending on the camera mode, the locomotion is based on Root Motion animations or the <mark style="color:green;">Unity Character Controller</mark> (the controller will be added automatically when the game starts).

### First Person

The movement is based on the <mark style="color:green;">Character Controller</mark>, you can edit the speed, jump height, crouch depth, and other movement parameters.

![](/files/ZzN5ZHxz4f2wpBNEuAFa)

### Third Person

The movement in the Aim state and jumps are based on the <mark style="color:green;">Character Controller</mark>, other states are based on the Root Motion animations.

You have 2 <mark style="color:green;">**Movement Types**</mark> to choose from:

* **Stanard** - if you point the character towards the opposite camera, he turns around (like in most story games).
* **All Directions** - the character moves in all directions without turning (like in Fortnite, PUBG)

![](/files/t1Iz5QjRcRynlJLY1VPa)

### Top Down

The movement is based on the <mark style="color:green;">Character Controller</mark>, you can adjust speed and jump parameters.

![](/files/wXhu3zxAnBVauVLPPd60)


# Change Movement Animations

To change movement animations do the following:

* Open an animator controller, which are located in <mark style="color:orange;">**Tools -> Assets -> Animator Controllers -> Character.controller**</mark>
* In the <mark style="color:green;">**Animator**</mark> window, open the <mark style="color:green;">**\<TP & TD Movement>**</mark> state:
* Then choose one of the movement states and replace animations in it.&#x20;

![](/files/-M1-q2Ec7BTQBcaoz0jK)

&#x20;   **Meaning:**&#x20;

1. Character rotation in place
2. Walking in the <mark style="color:green;">**Aim**</mark> <mark style="color:green;">**State**</mark>, <mark style="color:green;">**TD Mode**</mark>, and <mark style="color:green;">**TP**</mark> <mark style="color:green;">**All Directions**</mark> mode
3. The same as in the 2nd point, but for the running
4. Melee attacks (changes automatically based on weapon animations)
5. Running forward in the normal state
6. The same as in the 5th point, but for the walking&#x20;
7. Actions for the crouch mode (walking, aiming, etc.)
8. Grenade throw (changes automatically based on grenade animations)
9. Jumping

![](/files/-MXwhyOh9E4ItW84NZj-)


# Health

In the <mark style="color:green;">**Health**</mark> tab, you'll find various health parameters.

{% hint style="info" %}
The character's ragdoll is generated automatically after death.
{% endhint %}

![](/files/wXC2AmD37TJAu3d9HnCR)

#### Blood Holes

They will be generated on the character's body when enemies or other players shoot at him.

#### Damage Multipliers

These parameters indicate how much the damage received from the other players and AI opponents will be multiplied.

{% hint style="info" %}
For example - a weapon has 10 damage, if the bullet hits the head the character will take 30 damage.
{% endhint %}


# Tags

{% hint style="info" %}
These are **not the same** as standard Unity tags, which you see in the upper right corner of the editor.
{% endhint %}

The character tag is his unique identifier, which is needed for weapons and footsteps sounds.

You can manage the tags in any character with the <mark style="color:green;">**Controller**</mark> script. If you add a new tag in one character, it will be added to other characters too, i.e. they are synchronized.

![](/files/e9hEy1GZt4yBwUecsYbB)

#### Weapons

Since all characters have different hand positions and orientations, they will hold the same weapon differently. Therefore, you can customize the hands pose for each character separately using the IK tools. And these tags are useful for distributing all IK parameters.

{% content-ref url="/pages/-LfFWCJIJVVr4jaB\_Ixj" %}
[Adjustment](/weapons/adjustment)
{% endcontent-ref %}

#### Footstep Sounds

Use different tags to add unique walking sounds for different characters.

{% content-ref url="/pages/-LfFYOlPtoEsVUF9uumA" %}
[Surfaces](/other-components/surfaces)
{% endcontent-ref %}


# Noise

These parameters show the radius of the character's noise. If the character makes a lot of noise, the enemy will notice him.

![](/files/PFAb1MCMQEjF2mEsVyj5)

For AI opponents to hear the player, activate the appropriate detection option

{% content-ref url="/pages/QRZTyY0VwyNhh0cPoAaU" %}
[Detection Parameters](/enemies/ai-controller/detection-parameters)
{% endcontent-ref %}

{% hint style="info" %}
For debugging, the <mark style="color:green;">**Noise Radius**</mark> looks like a **white circle**

<img src="/files/-LzsWhQCl-PaqTZGdYFw" alt="" data-size="original">
{% endhint %}


# Camera

All camera parameters for all views are located in one place in the <mark style="color:green;">**Controller**</mark> script.

* To activate/deactivate a camera view, use the <mark style="color:green;">**\[Use]**</mark> toggle.

![](/files/nKqWuTbQJbODalYC95d2)

* To switch a camera type during the game, press the <mark style="color:orange;">**\[C]**</mark> button. You can also edit it in the [**Input Manager**](broken://pages/-LgsmmZ3imcB_3_zwB_A).

![](/files/nBmzD791KM7hAma4Fhan)

#### Below you will find information about the meaning of all parameters.

{% content-ref url="/pages/-M8l8pcCYe4RChPegWzB" %}
[First Person](/characters/camera/first-person)
{% endcontent-ref %}

{% content-ref url="/pages/cwgKBBIXzWQJupxYyKoY" %}
[Third Person](/characters/camera/third-person)
{% endcontent-ref %}

{% content-ref url="/pages/-LugcYbI\_RBtTcAVan82" %}
[Top Down](/characters/camera/top-down)
{% endcontent-ref %}


# First Person

Parameters and their meaning

![](/files/uPui3sUb7vnvwxdU5Fee)

| **Sensitivity**                | Mouse/gamepad/touch sensitivity                                                              |
| ------------------------------ | -------------------------------------------------------------------------------------------- |
| (Aim) **Sensitivity**          | Mouse/gamepad/touch sensitivity while aiming                                                 |
| **Aim** **depth**              | Camera depth while aiming                                                                    |
| **Vertical Min/Max Limits**    | The rotation limits of the camera along the vertical and horizontal axes                     |
| **Horizontal/Vertical Smooth** | Camera smoothness in two axes                                                                |
| **Smooth Weapons**             | If this option is active, the character's hands movement is smoother (like in most FP games) |
| **Head Boobing**               | Camera wiggle parameters.                                                                    |


# Third Person

![](/files/KRV0EeTI78Od9tdDpvfh)

| **Sensitivity**                | Mouse/gamepad/touch sensitivity                                                                                       |
| ------------------------------ | --------------------------------------------------------------------------------------------------------------------- |
| (Aim) **Sensitivity**          | Mouse/gamepad/touch sensitivity while aiming                                                                          |
| **Aim** **depth**              | Camera depth while aiming                                                                                             |
| **Vertical Min/Max Limits**    | The rotation limits of the camera along the vertical and horizontal axes                                              |
| **Horizontal/Vertical Smooth** | Camera smoothness in two axes                                                                                         |
| **Smooth Camera**              | Changing the camera distance when the character is moving (crouch - the camera is near, run - the camera is far, etc) |
| **Boobing**                    | If this parameter is active, the camera will depend on the character's head (it'll swing)                             |


# Top Down

Parameters and their meaning

For the TD view, you can choose one of 2 modes by clicking the **Lock Camera** checkbox in the **Controller** script.

### Lock Camera mode

![](/files/MRF6d1iS1bF5brq178Nz)

![](/files/-M8lDyPQJ6GCW8Vm50yq)

| Value                    | Meaning                                                                                                                                                                                                                                                            |
| ------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Aim at Cursor**        | <p>If this checkbox is active, the character aims and shoots were the mouse cursor is pointing. If not, the character shoots always forward.</p><p><img src="/files/-MDQyptqOrJFDR1lX3kn" alt=""></p>                                                              |
| **Body Rotation limits** | <p>If <strong>Aim at Cursor</strong> parameter is active these limits are needed for the character's body rotation (if a player places the cursor too high or low, the character won't look there)</p><p></p><p><img src="/files/-MDVprPakfirX_Xmwm6f" alt=""></p> |
| **Sensitivity**          | Mouse/gamepad/touch sensitivity                                                                                                                                                                                                                                    |

### Unlock Camera mode

![](/files/rxw6twUbeuyRh3eLUwGQ)

![](/files/-M8lHfC30Oiu7JQltDr9)

| Value           | Meaning                                                                                                                                                                                              |
| --------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Always Aim**  | <p>If this feature is active, a character will always aim. If not, the character will aim when you press a button (like in the TP view)<br></p><p><img src="/files/-MDQz47R0ApgpGFXeifK" alt=""></p> |
| **Sensitivity** | Mouse/gamepad/touch sensitivity                                                                                                                                                                      |
| **Smooth**      | Camera smoothness                                                                                                                                                                                    |


# Inventory Manager

The <mark style="color:green;">**Inventory Manager**</mark> script controls the character's inventory, pick-up and drop systems, IK, and also fists attacks.

![](/files/YPq7wJoy8hvJPbox1AvR)


# Usage

### Editor

* To add a weapon, place a prefab there.

![](/files/-M8qc-tuLWhT1N8XVIOj)

* About the fists attack read below ↓

{% content-ref url="/pages/-LzsPAmjMJg66RDl-mHU" %}
[Fists Attack](/characters/inventory-manager/melee-attacks-with-fists)
{% endcontent-ref %}

### Game

* If you have more than one weapon in a slot, you can switch them in the game. Thus, it's possible to group weapons by type (for example, the first slot has pistols, the second has machines, etc).

![](/files/-M8rFojyqLW0bAEPScYS)

* In the **"Health Slot"** and **"Ammo Slot"** will be added ammo and first aid kits that you pick up during the game.
* The **"Ammo Slot"** displays a count of ammo for the weapon that is currently selected in the inventory.
* If you have ammo in inventory that is suitable for several types of weapons – they will be displayed with all of them, but after you use this ammunition for one gun, they will be deleted in other weapons (that makes sense 🙂).

![](/files/-M8rKIfiwSOtOOKNQbQb)


# Fists Attack

To use fists attack set the checkbox in one of the inventory slots and fill all variables.

![](/files/VuOyxvYF7qWQ4TRPiHUb)

In the game you can choose this attack in the inventory.

![](/files/-LzsVN7HOkZqXPgZvcBh)


# Drop Weapons

To drop a weapon, press the <mark style="color:green;">**\[Y]**</mark> button. You can change the button in the <mark style="color:green;">**Input Manager**</mark> <mark style="color:orange;">**(Tools -> USK -> Project Settings -> Input)**</mark>.

{% hint style="info" %}
**In-game tip**

If you drop a weapon, the ammo for it will be hidden in the inventory. When you pick it up again, the ammo will be shown.
{% endhint %}

![](/files/-M8rQBgfZR8Lq4mbUc06)


# Multiplayer

To prepare characters for multiplayer, you just need to add multiplayer scripts to each character by clicking the <mark style="color:green;">**Add Multiplayer Scripts**</mark> button in the **Controller** script.&#x20;

{% hint style="info" %}
After you add the scripts, you do not need to do anything extra, everything works automatically.
{% endhint %}

{% hint style="warning" %}
The characters' prefabs must be located in the \[*/Resources* ] folder; otherwise, they won't be created in the game.
{% endhint %}

![](/files/gBqY6FaYi5zRNcKU6VYT)


# Overview

First of all, you need to **create** **a weapon** and then **adjust** it.

{% content-ref url="/pages/-LfFSwlhSDD9Z\_M7lMR9" %}
[Creation](/weapons/creation)
{% endcontent-ref %}

{% content-ref url="/pages/-LfFWCJIJVVr4jaB\_Ixj" %}
[Adjustment](/weapons/adjustment)
{% endcontent-ref %}

After that, you can use the weapon in your game.

{% content-ref url="/pages/-LfFV\_EUSsdjJFxBTKC4" %}
[Usage](/weapons/usage)
{% endcontent-ref %}

If you need more information about the <mark style="color:green;">**Weapon**</mark> <mark style="color:green;">**Controller**</mark>, then go to the section below.

{% content-ref url="/pages/GiLN68NFxyJrwluw07ho" %}
[Weapon Controller](/weapons/weapon-controller)
{% endcontent-ref %}


# Creation

To create a weapon do the following:

1. Open the creation tool <mark style="color:orange;">**(Tools -> USK -> Create -> Weapon)**</mark>
2. Set there a weapon model and press the <mark style="color:orange;">**Create**</mark> button
3. Add all required animations to the <mark style="color:green;">**WeaponController**</mark> component
4. Adjust the <mark style="color:red;">**Attack Point**</mark>
5. Adjust the weapon collider
6. Customize other parameters you need

{% embed url="<https://youtu.be/y1tWCjVlENo>" %}

#### The next step is to adjust the weapon to match your characters.

{% content-ref url="/pages/-LfFUwj67py39OfIQfKl" %}
[Adjustment](/characters/character-adjustment)
{% endcontent-ref %}


# Adjustment

Once created, the weapon will be positioned incorrectly in the character's hands, it's normal behavior and to fix this do the following:

* Open the <mark style="color:green;">**Adjustment Tools**</mark>**&#x20;**<mark style="color:orange;">**(Tools -> USK -> Adjust)**</mark>
* Place there the weapon and the characters you intend to use it with and press the <mark style="color:orange;">**Play**</mark> button.

![](/files/B9JKubBEe4J4lssoA5D0)

* Select a character and weapon start adjusting.

### Adjustment Tools

![](/files/AcWQGfRBeFb8Fi1A3Kuo)

<mark style="color:green;">**Settings Slot**</mark> is a save layout that stores the following data: **position**, **rotation**, and **size** of the weapon, **IK hands** parameters, **IK elbows/fingers** parameters. You can create as many slots as you need.&#x20;

Read below about the **IK adjustment tools** and their parameters.

{% content-ref url="/pages/-Lr1H6Ii8\_SpZXGadEhu" %}
[IK Tools](/weapons/adjustment/ik-tools)
{% endcontent-ref %}

{% hint style="info" %}
Don't forget to save all your changes.
{% endhint %}

### **Adjustment Process**

In the future, you can link settings slots with various camera views and with different characters.

* Create 3 slots for each camera view (or as much as you need) and adjust weapon **position**/**rotation** (just move and rotate it as you need) and also **hands pose** for each slot.

/

* If necessary, select another character and adjust this weapon for him too.
* As a result, the weapon will have several slots, each of which corresponds to a certain character and a certain type of camera.

![](/files/MNsqME6eUE8H5xkKpZYi)

* Now select the weapon prefab in the project window and open the <mark style="color:green;">**Weapon Settings**</mark> <mark style="color:green;">**tab**</mark> in the <mark style="color:green;">**Weapon Controller**</mark> script.
* There you can link all slots you have created with camera views and characters (in this case, use various [**character tags**](/characters/controller/tags)).

![](/files/OUzgdo0XLC8Q8VvmuidP)

* After these steps, you can be sure that the weapon will work great with your characters, and therefore you can move on to adding it to the game.

{% content-ref url="/pages/-LfFV\_EUSsdjJFxBTKC4" %}
[Usage](/weapons/usage)
{% endcontent-ref %}


# IK Tools

Switch between **hands**, **elbows**, and **fingers** using the top toolbar.

![](/files/WSNYiba9jAqBQMx3aMVp)

For faster adjustment, you can copy parameters from other weapons, slots, and IK modes.

![](/files/EQ7yYNEum4Ozb0BF7pIi)

### Hands

Adjust positions and rotations of the character's hands using the IK handles.

#### <mark style="color:green;">**IK Mode**</mark>

| Mode       | Description                                                                                                                                                                                                                                                 |
| ---------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Normal** | <p>It's the usual weapon state when a character is being idle, walking<mark style="color:green;"><strong>,</strong></mark> or running.</p><p></p><p>Move and rotate the <mark style="color:red;"><strong>red cubes</strong></mark> to adjust the hands.</p> |
| **Aim**    | <p>It's the state when the character is aiming.</p><p>Use the <mark style="color:blue;"><strong>blue cubes</strong></mark> to adjust the hands.</p>                                                                                                         |
| **Wall**   | <p>It's the state when the character is near an object.</p><p>Use the <mark style="color:yellow;"><strong>yellow cubes</strong></mark> to adjust the hands.</p>                                                                                             |
| **Crouch** | This state will be useful only for the **third-person view**. In the crouch sate, the character's hands may look weird *(see the image below)*. Use the <mark style="color:purple;">**purple cubes**</mark> to adjust them.                                 |

![Crouch IK adjustment for the TP view](/files/-LrOFJgZ68mE9HiixItI)

#### <mark style="color:green;">**Disable IK in this state**</mark>

Turns the IK off for the current mode, the weapon idle animation is played (for the TP view, is played the character's idle animation - *see the image below*).

![](/files/57Rgzsu18mDCAEuFSD5G)

#### <mark style="color:green;">**Pin Left Hand**</mark>

If this option is active, the left hand is dependent on the right.

![](/files/toDQ1lYQM0tmNmi2fQg2)

### Elbows

Move the <mark style="color:green;">**green spheres**</mark> to adjust the direction of elbows.

![](/files/-M8uSfL4mwerqvWa8Cgl)

### Fingers

There you can adjust the fingers' rotation offset.

![](/files/FglHXMptpEvKLcSF7Egq)


# Weapon Controller

It is the single and most important component that is responsible for all weapon behavior. Below you'll find more detailed info about some of its parameters.

{% content-ref url="/pages/-Lr1CsjDenISQtBziHd3" %}
[Attacks](/weapons/weapon-controller/attacks)
{% endcontent-ref %}

{% content-ref url="/pages/-LgtA3IiNXnRPipUYnrd" %}
[Aim Settings](/weapons/weapon-controller/aim)
{% endcontent-ref %}

{% content-ref url="/pages/-Lzq\_ePJ2wYYYepFOBcP" %}
[Animations](/weapons/weapon-controller/animations)
{% endcontent-ref %}


# Attacks

In the script, you can choose one of 7 types of attacks. And it is not necessary to strictly correspond to their names.&#x20;

{% hint style="info" %}
For example, you can set the attack type - <mark style="color:green;">**"Bullets"**</mark>, the shooting method - <mark style="color:green;">**"Spawn Bullets",**</mark> then add magic effects and you got a **magic weapon**. Just use your imagination and you can make many unique weapons.

<img src="/files/GcQJmZ73Qi7iME1vk60o" alt="" data-size="original">
{% endhint %}

Also, you can add a few attacks in one weapon. To do this, click the <mark style="color:orange;">**\[Add a new one]**</mark> button.

During the game, switch between attacks by pressing the <mark style="color:green;">**\[T]**</mark> button, you can edit it in the <mark style="color:green;">**Input Manager**</mark> <mark style="color:orange;">**(Tools -> USK -> Project Settings ->  Input)**</mark>.

![](/files/VMRXPEH9t4aixqqC7uh3)


# Aim Settings

In the <mark style="color:green;">**Weapon Controller**</mark> script, you can enable/disable the aiming mode for each camera view.

![](/files/sFDok19P6hwpjBE7hndu)

Below you will find detailed information about the aimmimg state for each camera type.

{% content-ref url="/pages/-M8uX6rQMnZxwXPI99qa" %}
[First Person](/weapons/weapon-controller/aim/first-person)
{% endcontent-ref %}

{% content-ref url="/pages/-M8uXB\_UtiRrVIxa-T3z" %}
[Third Person](/weapons/weapon-controller/aim/third-person)
{% endcontent-ref %}

{% content-ref url="/pages/-MDVdI1pqDsyV2o1SIFN" %}
[Top Down](/weapons/weapon-controller/aim/top-down)
{% endcontent-ref %}


# First Person

![](/files/HpcXTQ6HEqf1MfUClDgG)

### Aim Speed

How fast a character takes a weapon in the aim mode.

![](/files/-M8uYACCzpvao0-cDYMf)

### Scope Object

To create a sight display, do the following:

1. Create an object to match the weapon scope (standard cylinder for example)
2. Activate the <mark style="color:green;">**Scope Mode**</mark> in the <mark style="color:green;">**Weapon Controller**</mark> script
3. Place the object you created into the script

![](/files/-M8vRFo4k5VuCZCtEMY2)

### Aiming with texture

To add a sight texture, do the following:

1. Activate the <mark style="color:green;">**Texture Mode**</mark>
2. Set a texture

![](/files/oysvlj8TXYPADfUIn8zN)


# Third Person

![](/files/MepivFC62xIiX37TT9FC)

### Aim Speed‌

How fast a character takes the weapon in the aim mode.

![](/files/-M8uqg0CD4QWevdLMUPC)

### Switch to FP view

If you use the third-person view and activate this feature:

1. First button click - enable normal aim mode.
2. Second button click - switch to the first-person view to deep aim.
3. Third button click - disable aim.

![](/files/-M8utFDkzKhiPYvYfZEX)

### Aim before Attack

If this feature is active, a character will aim before the attack.

![](/files/-LzqgVWb6imWT9OMiejU)

### Scope model

To create a sight display, do the following:

1. Create an object to match the weapon scope (standard cylinder for example)
2. Activate the <mark style="color:green;">**Scope Mode**</mark> in the <mark style="color:green;">**Weapon Controller**</mark> script
3. Place the object you created into the script

![](/files/-M8vR4QiNqdLhR8l2KgD)

### Aim with texture

To add a sight texture, do the following:

1. Activate the <mark style="color:green;">**Texture Mode**</mark>*.*
2. Set a scope texture.

![](/files/DeVwGkiMrjPdetkGxvTJ)


# Top Down

If you use the [**"Unlocked" camera mode**](/characters/camera/top-down#unlock-camera-mode) and the <mark style="color:green;">**"Always Aim"**</mark> feature is disabled, a character will aim in this view.

![](/files/QqkhyAth0fOCS6DKb894)

![](/files/iaPH8jaDNYAzsXxHbA7J)

### Aim Speed‌

How fast a character takes a weapon in the aim mode.

![](/files/-MDW400mzk5R9ht3D_qc)

### Aim before Attack

If this feature is active, a character will aim before the attack.

![](/files/-MDW4lORL64xTLPlQDQe)

###


# Animations

If you have animations in which a weapon is animated, read this:

{% content-ref url="/pages/-Lzq\_tXojyw\_S3epjscT" %}
[Animated Weapons](/weapons/weapon-controller/animations/animated-weapons)
{% endcontent-ref %}

If you have animations in which the character uses guns magazines, takes weapons in different hands, read this:

{% content-ref url="/pages/-M0na49egEhakjo7TCaG" %}
[Animation Events](/other-components/events)
{% endcontent-ref %}


# Animated Weapons

This feature is for professionals.

You can use animated weapons with the USK.

{% hint style="info" %}
**Important!**

To all parts of a weapon are animated, a path (in the character’s skeleton) to the weapon in an animation must correspond to the path to the weapon in the game - like in Generic Animations.

**For Example:**

You've created an animation - character with a pistol. In the animation your character bones have the struct:&#x20;

Hips -> Spine -> Spine1 -> ...

If you use this animation with another character which has different bone names or struct (swat:Hips -> swat:Spine -> swat:Spine1 -> ...), the pistol won't be animated during the game.
{% endhint %}

To add animations with animated weapons do the following:

* **Import an empty animation with all weapons in the root** (for example, T-Pose animation).

![](/files/-M0qyQiazyarr5P62axx)

* **Create the Avatar Mask** with this animation avatar.

![](/files/-M0r5ononkyoQCuQ3gLl)

* Make sure that all animated weapons and their parts are selected in the mask

![](/files/-M0r68GtL3PCabdOpLp0)

* **Add the mask to weapons animations**. In each animation which contains an animated weapon, you must add the mask which you created before

![](/files/-M0r6sCtcUf7bwqCg3F3)

* **Adjust the main Masks** (Tools -> Assets -> \_Masks -> **BodyTop** **(tp,td)** & **BodyTop (fp)**) with the T-Pose avatar (which you've imported in the 1st step). Select in the masks only animated weapons parts.

![](/files/-M0r7TTKQLFJ46isHqmy)

#### Watch the video with an example of adding animations:

{% embed url="<https://youtu.be/wj9N1qC96IA>" %}

To learn how to synchronize animations with the player’s actions (for example, the spawn of magazines when reloading), read this page:

{% content-ref url="/pages/-M0na49egEhakjo7TCaG" %}
[Animation Events](/other-components/events)
{% endcontent-ref %}


# Usage

To add the weapon to the character's inventory, place it in the <mark style="color:green;">**Inventory Manager**</mark> script.

{% content-ref url="/pages/-Lr1ANF\_95xr0fePxB9e" %}
[Inventory Manager](/characters/inventory-manager)
{% endcontent-ref %}

Or you can use it as a pickup item so that players can take it during the game.

{% content-ref url="/pages/-LfMgBYllOYQbnyAzw0N" %}
[Pickup Items](/other-components/pickup-items)
{% endcontent-ref %}


# Overview

First of all, create an enemy using creation tools.

{% content-ref url="/pages/-LfFT66O7VL1LXO\_ggj\_" %}
[Creation](/enemies/creation)
{% endcontent-ref %}

Then you need to set the attack parameters.

{% content-ref url="/pages/-LfFXKDcO-LdFylJgHDL" %}
[Attack](/enemies/ai-controller/attack)
{% endcontent-ref %}

Also, you may need to customize other things.

{% content-ref url="/pages/-LfFXJqwy6bQ6WTeDJlC" %}
[Movement](/enemies/ai-controller/movement)
{% endcontent-ref %}

{% content-ref url="/pages/-LzriEvS7qy-m7LDNp0U" %}
[In-game Behaviour](/enemies/ai-controller/behavior)
{% endcontent-ref %}

{% content-ref url="/pages/-LfFXKSqAT9fN8AtLUJd" %}
[Health](/enemies/ai-controller/health)
{% endcontent-ref %}

Next, prepare your scene and add enemies to it.

{% content-ref url="/pages/-LzqmNXQZBNmxB5RRHgA" %}
[Adding to the Game](/enemies/adding-to-the-game)
{% endcontent-ref %}

If you want to add covers and grass to your scene, you can find information in the appropriate section.

{% content-ref url="/pages/-LzsfIgMdgsC3U6TiJY3" %}
[Covers](/enemies/adding-to-the-game/covers)
{% endcontent-ref %}

{% content-ref url="/pages/-M0hLyZs4vLra08y\_rDk" %}
[Stealth Zone (Grass)](/enemies/adding-to-the-game/stealth-grass)
{% endcontent-ref %}


# Creation

To create an enemy do the following:

1. Open the creation tool <mark style="color:orange;">**(Tools -> USK -> Create -> Enemy)**</mark>.
2. Place there your enemy model.
3. Add all animations on the Animations tab.
4. Customize the rest of the parameters if necessary (you'll find information about them below).

{% content-ref url="/pages/-LfFXKDcO-LdFylJgHDL" %}
[Attack](/enemies/ai-controller/attack)
{% endcontent-ref %}

{% content-ref url="/pages/-LzriEvS7qy-m7LDNp0U" %}
[In-game Behaviour](/enemies/ai-controller/behavior)
{% endcontent-ref %}

{% content-ref url="/pages/-LfFXKSqAT9fN8AtLUJd" %}
[Health](/enemies/ai-controller/health)
{% endcontent-ref %}

{% content-ref url="/pages/-LfFXJqwy6bQ6WTeDJlC" %}
[Movement](/enemies/ai-controller/movement)
{% endcontent-ref %}


# AI Controller

**This is the main component that is responsible for all AI behaviors.**


# In-game Behaviour

### Observer

The enemy stands still and observes the scene (turning periodically). If he noticed a player, he will inform other AIs in the current area and they will start looking for the player. If a firefight begins, the observer will attack from his original position.

![](/files/PbWYSdGYmqBdsw7ff6Rw)

### Warning State

If you mark the **'Use** **States'** checkbox, the enemy will use **Warning** and **Find** states during the game.

![](/files/lxLDEaBGvML4TjvpzIDf)

#### How it works:

<mark style="color:green;">**Warning State Enabled**</mark>

* If an enemy sees a character with the <mark style="color:green;">**central vision**</mark>, he will immediately attack him.
* If the enemy sees (with the <mark style="color:orange;">**peripheral vision**</mark>), hears, is close to the player or the player has shot him a few times, the warning state is activated and the enemy will look for him.&#x20;
* If while searching the enemy has found the character, he'll attack him again.
* If the enemy doesn't see or hear the character, he looks for him for а while again. And after that returns to waypoints.

<mark style="color:red;">**Warning State Disabled**</mark>

* If the enemy sees\* or hears a character, he immediately attacks him.
* If not, he immediately returns to waypoints.

{% hint style="info" %}
\*in this case, the enemy has only one (central) vision area.&#x20;
{% endhint %}

Also, you can unit enemies in your scene so that act together.

{% content-ref url="/pages/-LzqmNXQZBNmxB5RRHgA" %}
[Adding to the Game](/enemies/adding-to-the-game)
{% endcontent-ref %}


# Detection Parameters

A detection type is how the enemy will notice the players. You can set different types or all together.

Each detection type has the **Detection** **Sensitivity** value - it means how quickly opponents will notice the characters.

![](/files/QdZMG7AOc833oWHcvHJW)

### Vision

The vision is divided into 2 parts - <mark style="color:green;">**central vision**</mark> and <mark style="color:orange;">**peripheral**</mark>. During the game, if a player is in sight, the enemy will see him. And depending on the **AI behavior**, the enemy will immediately attack the player or start looking for him.

Here you'll find more info about the **AI behavior**:

{% content-ref url="/pages/-LzriEvS7qy-m7LDNp0U" %}
[In-game Behaviour](/enemies/ai-controller/behavior)
{% endcontent-ref %}

![](/files/NK2A5avcZv4TihWvce0C)

### Hearing

All characters have a noise radius, if the enemy is in that area and there are no walls between them, then he hears the character.

{% content-ref url="/pages/-LzsVnbJsS\_zhkpGiKRf" %}
[Noise](/characters/controller/noise)
{% endcontent-ref %}

### Close Range

If a player comes close to the enemy, he detects him.

![](/files/cUnBWcTCjPesWlBaoahb)


# Attack

To configure the enemy's attack, set all the parameters in the <mark style="color:green;">**AI Controller**</mark> script and adjust the <mark style="color:yellow;">**Attack Area**</mark> (during the game, the enemy runs to that area and then attacks).

![](/files/gDKNNWPtdpf5Jy2cMgpH)

#### Attack Area

{% hint style="info" %}
For melee enemies, make the small area, otherwise, they will attack characters very far.
{% endhint %}

* If the detection type is <mark style="color:orange;">**Vision**</mark> - the <mark style="color:green;">**Attack Distance**</mark> value regulates how many percents is the attack zone relative to the **See** **Area**.

![](/files/uz3SRORtOrax5nVEkwbK)

* In other cases, set the size of the attack zone as you need.

![](/files/zQ75yDfspDJBR2CsOm6d)


# Movement

### NavMesh Agent

The agent is responsible for the movement around the navmesh, and for avoiding obstacles. Therefore, it must match the enemy's size.

![](/files/9HmG6S8zZknSJrXVIETl)

### Movement Parameters

![](/files/QaYpWfi3Fhi6m6M3rS2S)

<mark style="color:green;">**Waypoints Behaviour**</mark> contains waypoints along which the enemy moves.

{% content-ref url="/pages/-LfFXMKIjfpgTNSsdil5" %}
[Waypoints](/enemies/adding-to-the-game/waypoints)
{% endcontent-ref %}

<mark style="color:green;">**Root Motion**</mark>

**Active** - the enemy speed is based on Root Motion animations.

**Inactive** - you can set the speed manually.

<mark style="color:green;">**All Directions Movement**</mark>

If this feature is **active**, the enemy moves in different directions during the attack state; **otherwise**, the enemy will standstill.


# Health

In this tab, customize various health-related parameters.

![](/files/PLP2OhL5PToGCbsXbaew)

### Damage Multipliers

These parameters indicate how much the damage received from the player will be multiplied. For different avatars, they are slightly different.

#### <mark style="color:orange;">Humanoid</mark>

Body colliders are automatically generated when you create an enemy.&#x20;

These colliders and multipliers will be used to get damage from characters. Also, colliders will be used like a ragdoll after the enemy's death\*.

{% hint style="info" %}
\*set a death animation to not activate the ragdoll
{% endhint %}

#### <mark style="color:orange;">Generic Avatars</mark>

Since colliders саn't be created automatically for non-humanoid characters, you should add them manually.&#x20;

Create a few colliders on different parts of the body, place them in the script, and set <mark style="color:green;">**Damage Multipliers**</mark>.

![](/files/-MJ3EY3xS5do_9Pz5AEs)


# Multiplayer

To prepare enemies for multiplayer, you just need to add multiplayer scripts to each enemy by clicking the <mark style="color:green;">**Add Multiplayer Scripts**</mark> button in the **AI Controller** script.&#x20;

{% hint style="info" %}
After you add the scripts, you do not need to do anything extra, everything works automatically.
{% endhint %}

{% hint style="warning" %}
If you're going to spawn enemies during the game, make sure the enemies' prefabs are located in the <mark style="color:green;">**(Resources)**</mark> folder; otherwise, they won't be created in the game.
{% endhint %}

![](/files/R54ywo2fiH5Dr0Tfy0WN)


# Adding to the Game

Adding opponents to multiplayer and single-player games is the same.

To add opponents to your game, you first need to create an **AI zone**:

1. Put all environment objects in your scene into **one parent object**.
2. Mark walls, floor, and other necessary objects as **static objects**.
3. Add the **AI Area** component to the parent object
4. Set the baking parameters you need and **bake the area**.

* The **Baked Agent Type** indicates which AI types will be able to move around this arena.
* If you are using more than one area in your scene, set different **Area Types** for them. This will limit opponents within one zone.

{% hint style="info" %}
You can create more areas and agent types in the Navigation tab *<mark style="color:orange;">(Window -> AI -> Navigation)</mark>.*&#x20;
{% endhint %}

![](/files/xT2tTGDNcFafLSCHErS2)

After the area is ready you can add enemies to the scene. This can be done in 2 ways:&#x20;

* If you need to spawn enemies on specific points, add them to the **AI Area** script.&#x20;

![](/files/lXJpvkh214yOKvO1zxyf)

| **Behavior**     | Enemies' movement behavior in the scene                                                                                                                     |
| ---------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Spawn method** | <p><strong>Random:</strong> one random point from the <strong>Spawn Zones</strong> will be chosen.</p><p><img src="/files/1KXOsByEt5D2kKIUGKe2" alt=""></p> |
|                  | **Specific point:** set a spawn zone for an enemy as you need.                                                                                              |
| **∞**            | Spawn enemies constantly.                                                                                                                                   |
| **Count**        | **If ∞ is not active**, this number means how many enemies will be spawned during the game.                                                                 |
|                  | **If ∞ is active**, this number means a limit of enemies in a scene. (if a player kill 3 zombies, 3 more will appear in the game)                           |
| **Time**         | A break between the appearance of enemies (in seconds).                                                                                                     |

* The second way is to place enemies on the scene in the places you need.

![](/files/qKBQ2P12i9DBwIymSmhh)

See the sections below to learn how to add **waypoints**, **covers**, and **grass**.

{% content-ref url="/pages/-LfFXMKIjfpgTNSsdil5" %}
[Waypoints](/enemies/adding-to-the-game/waypoints)
{% endcontent-ref %}

{% content-ref url="/pages/-LzsfIgMdgsC3U6TiJY3" %}
[Covers](/enemies/adding-to-the-game/covers)
{% endcontent-ref %}

{% content-ref url="/pages/-M0hLyZs4vLra08y\_rDk" %}
[Stealth Zone (Grass)](/enemies/adding-to-the-game/stealth-grass)
{% endcontent-ref %}


# Waypoints

You can create unique waypoints for each enemy, for this do the following:

* Create a <mark style="color:green;">**Movement Behaviour**</mark> by pressing <mark style="color:orange;">**(GameObject -> USK -> Movement Behaviour)**</mark>.
* Then create a few waypoints and place them as you need.

{% hint style="info" %}
When you click on the "+" button, a point is created; when you click on the "-", it is deleted.
{% endhint %}

![](/files/ETRzANghYJ9r45E7pQuu)

Each point has 2 parameters:

| Parameter       | Description                                                                                                                                                                                                                                                                                                                                                                                                   |
| --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Next Action** | <ul><li><strong>Next Point</strong> - the enemy will move to the next waypoint after the current point.</li><li><strong>Random Point</strong> - the enemy will find a random waypoint and move to it after current.</li><li><strong>Nearest Point</strong> - the enemy will find the nearest point and move to it after current. </li><li><strong>Stop</strong> - the enemy will finish patrolling.</li></ul> |
| **Wait**        | The enemy will stop near the point and wait for some time. In this state, one of the find animations will be played.                                                                                                                                                                                                                                                                                          |

* After you finish creating the <mark style="color:green;">**Movement Behavior**</mark>, set it in the script <mark style="color:green;">**AI Controller**</mark> script.

![](/files/CpN5txLFazWTeiOChILw)


# Covers

During the game, if an enemy finds suitable cover (close enough to yourself and the character), he will hide behind it.

* To enable this feature on the enemy, mark the <mark style="color:green;">**Use Covers**</mark> checkbox in the <mark style="color:green;">**AI Controller**</mark> script.

![](/files/EBvyDiA3PXSsR9k70b3k)

#### How to create a cover:

1. Add the <mark style="color:green;">**Cover**</mark> script to your cover game object
2. Create several empty objects and place them around the cover - opponents will be located at these points
3. Set those points in the script

![](/files/P7Wvkj38vx84sgnwXU3K)


# Stealth Zone (Grass)

This page is being edited

During the game, a character can hide from enemies in <mark style="color:green;">**stealth zones**</mark>. When the character enters a stealth area, he becomes invisible to opponents at a distance. If an enemy comes too close to him, then he will be detected.

![](/files/-M0qtSZVyl88IPYR13Ja)

#### Creation

1. Create a new <mark style="color:green;">**Stealth Zone**</mark> by pressing <mark style="color:orange;">**(Game Object -> USK -> Common Components -> Stealth Zone)**</mark>
2. Adjust its position and size
3. Optionally add a grass visualization (or something else)

{% hint style="info" %}
For low grass, set the <mark style="color:green;">**"Hide Only in Crouch State"**</mark> parameter so that the character is hidden only in the crouch state

<img src="/files/OvA6hlilWMezOoQ4IsIP" alt="" data-size="original">
{% endhint %}


# Overview

This manager allows you to enable and disable various game modules in one step. To open the manager press <mark style="color:orange;">**Tools -> USK -> Integrations Manager**</mark> or use the <mark style="color:orange;">**Shift+M**</mark> shortcut.

Just download the asset required for integration and then activate it; press the <mark style="color:green;">\[Deactivate]</mark> button if you no longer need it.&#x20;

![](/files/La7eYlHr6LljlqIJUBar)


# Emerald AI

A demo scene named <mark style="color:green;">**"USK & Emerald AI"**</mark> is located in the <mark style="color:green;">**(Demo Files/Scenes/Integrations/Emerald AI)**</mark> folder.

**How to activate:**

1. Download the asset and then enable an integration with it in the <mark style="color:orange;">**(Window -> USK -> Integrations Manager -> AI)**</mark>.
2. Add the following code to the <mark style="color:green;">**EmeraldAIPlayerDamage**</mark> script.

```
#if USK_EMERALDAI_INTEGRATION
    DamageUSKCharacter(DamageAmount);
#endif

#if USK_EMERALDAI_INTEGRATION
    void DamageUSKCharacter(int value)
    {
        if (GetComponent<GercStudio.USK.Scripts.Controller>() != null)
            {
                var controller = GetComponent<GercStudio.USK.Scripts.Controller>();
                controller.Damage(value);
            }   
    }
#endif
```

![](/files/ENohZNPXZXT7UZ0H4EdC)

**How to use:**

1. Follow the Emerald manual to add enemies to the scene, then add a USK character there.&#x20;
2. Make sure your enemies have the correct **Detection Layers.**

![](/files/iHRVfnGHlfxf7Fb16VUa)


# Realistic Car Controller

Supports RCC versions up to 3.49 (inclusive)

A demo scene named <mark style="color:green;">**"USK & Realistic Car Controller"**</mark> is located in the <mark style="color:green;">**(Demo Files/Scenes/Vehicle Systems Integrations)**</mark> folder.

**How to activate:**

1. Download and import the Realistic Car Controller asset.
2. Import the <mark style="color:green;">**BCG Shared Assets**</mark> from the <mark style="color:green;">**(RealisticCarControllerV3/Addon Packages/For BCG Shared Assets (Enter-Exit))**</mark> folder.
3. Activate an integration in the <mark style="color:orange;">**(Window -> USK -> Integrations Manager -> Vehicles)**</mark>.

**How to use:**

* Set up your scene just like the demo scene (for more info, follow the RCC documentation).

<figure><img src="/files/IBVsJAQiBgSeN7cqoD9n" alt=""><figcaption></figcaption></figure>

* Add the <mark style="color:green;">**"Interaction with Cars"**</mark> script to USK character.
* Add the character to the scene.


# Edy's Vehicle Physics

A demo scene named <mark style="color:green;">**"USK & Edy's Vehicle Physics"**</mark> is located in the <mark style="color:green;">**(Demo Files/Scenes/Vehicle Systems Integrations)**</mark> folder.

**How to activate:**

1. Download the kit and then enable an integration with it in the <mark style="color:orange;">**(Window -> USK -> Integrations Manager -> Vehicles)**</mark>.

**How to use:**

1. Add Edy's cars to your scene.
2. Add the <mark style="color:green;">**"Interaction with Cars"**</mark> script to a USK character.
3. Add the character to the scene.


# NWH Vehicle Physics 2

A demo scene named <mark style="color:green;">**"USK & NWH Vehicle Physics 2"**</mark> is located in the <mark style="color:green;">**(Demo Files/Scenes/Vehicle Systems Integrations)**</mark> folder.

**How to activate:**

* Download the kit and then enable an integration with it in the <mark style="color:orange;">**(Window -> USK -> Integrations Manager -> Vehicles)**</mark>.

**How to use:**

* Set up your scene just like the demo scene.

<figure><img src="/files/A0RwEn4bTlyeojSgLQa0" alt=""><figcaption></figcaption></figure>

* Add the <mark style="color:green;">**"Interaction with Cars"**</mark> script to a USK character.
* Add the character to the scene.


# Destroy It

This page is being edited

A demo scene named <mark style="color:green;">**"USK & Destroy It"**</mark> is located in the <mark style="color:green;">**(Demo Files/Scenes/Integrations/Physics)**</mark> folder.

**How to activate:**

1\. Download the asset and then enable an integration with it in the <mark style="color:orange;">**(Window -> USK -> Integrations Manager -> Game Features)**</mark>.

**How to use:**

* By default, any weapon will deal the specified damage to objects.&#x20;
* If you want to repair items, then set the weapons damage to negative

![](/files/FrS4QuA2VxE4DGLNH2I5)


# Easy Save 3

**How to activate:**

* Download the system and then enable an integration with it in the <mark style="color:orange;">**(Window -> USK -> Integrations Manager -> Tools)**</mark>.

**How to use:**

* Follow the guide for setting up the built-in save system. And when the integration is enabled, all data will be saved using the Easy Save features (saved files type, encryption and other settings can be configured in <mark style="color:green;">**Window -> Easy Save 3 -> Settings**</mark>).

{% content-ref url="/pages/lz5NVdzmml94Y6bhQWJd" %}
[Save Manager](/other-components/save-manager)
{% endcontent-ref %}


# Creation

#### Characters

You can add a character to your game in two ways:

* Just place it in your scene.
* Use the <mark style="color:green;">**Game Manager**</mark>.

To add the manager to your scene click the <mark style="color:orange;">**(GameObject -> USK -> Game Manager)**</mark>.

![](/files/QTzgNZJuourzx7YdQMpg)

#### Enemies

Read below how to add opponents to the game.

{% content-ref url="/pages/-LzqmNXQZBNmxB5RRHgA" %}
[Adding to the Game](/enemies/adding-to-the-game)
{% endcontent-ref %}

Also, you can add **other components** and **integrations** to your game.

{% content-ref url="/pages/Mbp1D0B32cFYVuky1Pml" %}
[Integrations Manager](/integrations-manager/overview)
{% endcontent-ref %}

{% content-ref url="/pages/-MIycHdvueDGthMQ\_Fmy" %}
[Minimaps](/other-components/minimaps)
{% endcontent-ref %}

{% content-ref url="/pages/-LfMgBYllOYQbnyAzw0N" %}
[Pickup Items](/other-components/pickup-items)
{% endcontent-ref %}

{% content-ref url="/pages/-LfFYOlPtoEsVUF9uumA" %}
[Surfaces](/other-components/surfaces)
{% endcontent-ref %}


# Overview

First, you need to activate the multiplayer mode.

{% content-ref url="/pages/945w0Mx4pehV1DLmfZq2" %}
[Activation](/multiplayer/activation)
{% endcontent-ref %}

Then create a lobby and game rooms.

{% content-ref url="/pages/-LfFXl5YVukSxszvWuen" %}
[Lobby](/multiplayer/lobby)
{% endcontent-ref %}

{% content-ref url="/pages/-LfFXlQ6vEFwDlvaOJZl" %}
[Rooms](/multiplayer/rooms)
{% endcontent-ref %}

Also, you need to do a couple of additional actions to prepare characters and enemies for multiplayer.

{% content-ref url="/pages/dBm6D3NKzhdCk75TYyb9" %}
[Multiplayer](/enemies/multiplayer)
{% endcontent-ref %}

{% content-ref url="/pages/Ph1R8PFr8mj6XIsz36rW" %}
[Multiplayer](/characters/multiplayer)
{% endcontent-ref %}

To adjust all multiplayer UI (the lobby, rooms, match stats, etc) use the **UI Manager**.

{% content-ref url="/pages/ADmv6XVxqn6DHYueZGsa" %}
[UI Manager](/project-settings/ui-manager)
{% endcontent-ref %}


# Activation

* Import the <mark style="color:green;">**PUN 2**</mark> asset from the Unity Package Manager.

![](/files/pF0GrphuPE3SdfevZ0CY)

* Enter an ID of your project in the PUN settings window (this window will appear after import or click <mark style="color:orange;">(Window -> Photon Unity Networking -> PUN Wizard -> Setup Project)</mark>).&#x20;

{% hint style="info" %}
You can get your ID on the [Photon site](https://www.photonengine.com/en-US/Photon), or use our: **5f8e39db-2ea0-4a49-bfb6-0ce36e6e69b5**
{% endhint %}

![](/files/xqViMeoiGCteOv35R08T)

* Open the <mark style="color:green;">**USK Integrations Manager**</mark> and activate the multiplayer module there.

![](/files/bkGwWCF5ti856rWQgrwG)


# Lobby

The **Lobby** is the main scene and component in the multiplayer mode. In there you can add characters, maps, and set other parameters.

To create a lobby manager click <mark style="color:orange;">**(Game Object -> USK -> Lobby Manager)**</mark>.

### Characters

Add all characters you need to the appropriate section. And players can choose one of them during the game.

![](/files/5uEyo0hwpXPTzfmwxo8N)

To prepare characters for multiplayer, see the section below.

{% content-ref url="/pages/Ph1R8PFr8mj6XIsz36rW" %}
[Multiplayer](/characters/multiplayer)
{% endcontent-ref %}

### **Maps**

Prepare your maps for multiplayer (see the **Levels** section), and indicate them in the Maps section.

{% content-ref url="/pages/-LfFXlQ6vEFwDlvaOJZl" %}
[Rooms](/multiplayer/rooms)
{% endcontent-ref %}

![](/files/0AVMPgsmmJa3HUTAAxFB)

{% hint style="info" %}
Before you build a game, make sure that **all scenes** (including the Lobby) are in the **Build Settings**.
{% endhint %}

### Other Parameters

#### Server & Check Internet Connection

If the <mark style="color:green;">**Check Internet Connection**</mark> bool is active, the **Lobby** **Manager** will first check if there is an internet connection, and then connect to the Photon server.&#x20;

To check the connection, the script uses the <mark style="color:green;">**Server**</mark> value (best to write big sites there - google, unity, etc)&#x20;

This solution is good for Desktop and Mobile builds because in this case, players will see a notification if they have no network connection.

But you don't need to use it for the **WebGL** build, so in this case, **disable the bool**.&#x20;

![](/files/khiXSXXKEJ1TBR68cPIM)

{% hint style="info" %}
If in the game lobby you see **No Internet Connection** status but you're sure that your device has the connection, just change the **Server**.
{% endhint %}

![](/files/-M8vYSIj9hpProJmqb94)

#### Default Avatars

Players will be able to choose one of these avatars during the game.

![](/files/-M61LkgL6qXheml-43iW)

###


# Rooms

The main thing in a multiplayer map is the **Room Manager** script - it responds to everything that happens during the game. To add it to the scene press <mark style="color:orange;">**(Game Object -> USK -> Room Manager)**</mark>*.*

![](/files/mvzJpCXn621o4eL50M5u)

{% hint style="info" %} <mark style="color:green;">**Spawn Zones**</mark> are needed for players to spawn.
{% endhint %}

#### Enemies

Read below how to add opponents to the game.

{% content-ref url="/pages/-LzqmNXQZBNmxB5RRHgA" %}
[Adding to the Game](/enemies/adding-to-the-game)
{% endcontent-ref %}

Also, you can add **other things** to your game.

{% content-ref url="/pages/-MIycHdvueDGthMQ\_Fmy" %}
[Minimaps](/other-components/minimaps)
{% endcontent-ref %}

{% content-ref url="/pages/-LfMgBYllOYQbnyAzw0N" %}
[Pickup Items](/other-components/pickup-items)
{% endcontent-ref %}

{% content-ref url="/pages/-LfFYOlPtoEsVUF9uumA" %}
[Surfaces](/other-components/surfaces)
{% endcontent-ref %}


# Activation and Usage

To use the mobile version just build your game for mobile platforms and it'll work. How to do that:

1. Switch **Build Target** in the Build Settings on Android or iOS.
2. (Optional) Adjust mobile buttons in the **UI Manager**.
3. All done! Go to the **Build Settings**, build the game, and run it on your mobile device.&#x20;

![](/files/-M8rRXCmU5cuqx-7c3ky)


# Mobile Debug

To test a mobile game in the editor, <mark style="color:green;">**enable**</mark> the Mobile Debug feature in the <mark style="color:green;">**Input Settings**</mark> <mark style="color:orange;">**(Tools -> USK -> Projects Settings -> Input)**</mark>, connect your device (you also need to use the [Unity Remote](https://docs.unity3d.com/Manual/UnityRemote5.html) app), and run your game in the editor.

![](/files/mcqiP96xhzdT7C7lIcmC)


# Save Manager

{% hint style="info" %}
There are 2 demo scenes in the project *<mark style="color:green;">**(Universal Shooter Kit -> Demos -> Scenes -> SinglePlayer -> Save System -> Save System (Scene 1) / (Scene 2))**</mark>*&#x20;

Open and run one of them to test the Save System.
{% endhint %}

### Adding to the game

To create a save system in your game, add a <mark style="color:green;">**SaveManager**</mark> script to any object in your scene.

&#x20;In this script you can choose which parameters will be saved, as well as enable autosave mode.

<figure><img src="/files/QGK38vmAOb8Pz2yOikoo" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
If you're going to save your character's inventory, make sure all the weapons you use are in the special pool *<mark style="color:green;">**(Tools -> USK -> Project Settings -> Weapons Pool)**</mark>*.

If your game has weapons that can be picked up, they should be added to the pool as well. Or add weapon prefabs to your scene and **don't unpack them**.
{% endhint %}

<figure><img src="/files/IGTFchVdyGjFOlcaK2Nb" alt=""><figcaption></figcaption></figure>

### How it works

* **(Load)** Every time you load a scene with the <mark style="color:green;">**SaveManager**</mark> component in it, all saved progress is loaded and applied (depending on which parameters you have activated).
* **(Save)** To save your progress, you need to call the save function (anywhere and at any time):

```
SaveManager.Instance.SaveData();
```

* **(Clear)** To clear all progress, call the following function:

```
SaveManager.Instance.DeleteAllSavedData();
```

{% hint style="info" %}
In the manager 2 classes are saved separately: the first class - **"Character Data"**, the second - **"Scene Data"**.

**Character Data** is saved in a single copy (contains character health and inventory values)

**Scene Data** is saved for each scene separately (contains the position of the character, dropped/picked up items, and AI parameters) and refers to scenes by their names **(please note: when you rename a scene, the linked save won't be loaded)**
{% endhint %}

### Custom Save Data

If you need to save some other parameters, use the prepared <mark style="color:purple;">**CustomData**</mark> class in the <mark style="color:green;">**SaveManager**</mark> script.

{% hint style="info" %}
You can only save serializable variables - [Unity Docs](https://docs.unity3d.com/Manual/script-Serialization.html#SerializationRules).
{% endhint %}

<figure><img src="/files/sd2zQaZh7JOM4BFoV3IL" alt=""><figcaption></figcaption></figure>

Also, you need to apply the loaded parameters after loading the save files.

<figure><img src="/files/eojHe3h2FhgAUdyhv0lx" alt=""><figcaption></figcaption></figure>

### Easy Save Integration

By default, all data is saved to JSON files without encryption. If you want to expand these features, then activate an integration with the Easy Save system.

{% content-ref url="/pages/yWyaUGhZ3sZWdpkVdCDG" %}
[Easy Save 3](/integrations-manager/easy-save-3)
{% endcontent-ref %}


# Spawn Zones

Spawn zones are needed to spawn characters and enemies and they are used in single-player and multiplayer. During the game, a character/enemy will appear at a random\* point in the specified zone.

{% hint style="info" %}
\*make an area very small if you need a precise spawn point
{% endhint %}

Spawn characters in single-player:

{% content-ref url="/pages/-Lr1FjH86t9KZtMZHyoT" %}
[Single-player Game Creation](/single-player/creation)
{% endcontent-ref %}

Spawn characters in multiplayer:

{% content-ref url="/pages/-LfFXlQ6vEFwDlvaOJZl" %}
[Rooms](/multiplayer/rooms)
{% endcontent-ref %}

Spawn AI opponents in both modes:

{% content-ref url="/pages/-LzqmNXQZBNmxB5RRHgA" %}
[Adding to the Game](/enemies/adding-to-the-game)
{% endcontent-ref %}

To create a <mark style="color:green;">**Spawn Zone**</mark> press <mark style="color:orange;">**(Game Object -> USK -> Spawn Zone)**</mark>.&#x20;

You can freely rotate, move and resize the area to customize it (the arrow shows in which direction players/opponents will appear).

![](/files/kWsNOTOoZnx5RoR8c2Vq)


# Minimaps

### Creation

To add a minimap to your game do the following:

* Add the [**Game** **Manager**](broken://pages/-Lr8UMD-DWS1nrk6KT0f) (single-player) or [**Room** **Manager**](/multiplayer/rooms) (multiplayer) component to your scene
* Open the <mark style="color:orange;">**Mini-map**</mark> <mark style="color:orange;">**tab**</mark> and activate the <mark style="color:green;">**"Use"**</mark> checkbox
* Place there your texture (read [**here**](/other-components/minimaps/texture-recommendations) about recommendations) and press the <mark style="color:orange;">**Adjust**</mark> <mark style="color:orange;">**Map**</mark> button

![](/files/XhVL7n7XXbXeSyZjLJyL)

* Now you should adjust the size, position, and rotation of the <mark style="color:green;">**"Map**</mark> <mark style="color:green;">**Example"**</mark> plane to fit your map in the scene

![](/files/-MJ1L4H_kAxZphQ2avWs)

* After that, the mini-map is ready and you can customize different parameters for it:

| Value                        | Meaning                                                                                                            |
| ---------------------------- | ------------------------------------------------------------------------------------------------------------------ |
| **Rotate Mini-map**          | The minimap will rotate with the camera view                                                                       |
| **Rotate Blips**             | Opponents blips will rotate with their parents                                                                     |
| **Blips are Always Visible** | If a blip is outside the mini-map, it still visible                                                                |
| **Scale by Distance**        | If a blip is outside the mini-map, it still visible and is scaled relative to the **'Visible** **Distance'** value |

### UI Placeholder Adjustment

In the <mark style="color:green;">**UI**</mark> <mark style="color:green;">**Manager**</mark>, you can adjust a minimap placeholder and its form.

![](/files/iQR4dHcgUesQzAWJCC2T)

### Blips

#### Characters & Enemies

You can set a blip texture for characters and enemies in the <mark style="color:green;">**Controller**</mark> and <mark style="color:green;">**AIController**</mark> scripts respectively.

![](/files/PO9qMmY6hOv0na8TlGwd)

#### Pickup Items

There is the ability to set blips in the <mark style="color:green;">**Pickup**</mark> <mark style="color:green;">**Item**</mark> script (for weapons in the <mark style="color:green;">**Weapon Controller**</mark> script)

![](/files/-MJ1Om213mDOFcJbgheR)

#### Other Objects

If you need to mark any other object in your scene (a target for example) use the <mark style="color:green;">**Blip**</mark> script for that - just add it to an object and set an <mark style="color:green;">**Icon**</mark>.

<mark style="color:green;">**Use**</mark> <mark style="color:green;">**Rotation**</mark> parameter means whether the icon will rotate with the object.

![](/files/-MJ1RuMe9os0cZf8b56l)


# Texture Recommendations

* Your texture must be square

![](/files/-MJ1T_JwfkApay-exkSR)

* Place the center of a texture out of the reach of players because all calculations are relative to the map center and if a character is too close to it, then there may be some inaccuracies.

![](/files/-MJ2YYMGQNf_N2SmnLzL)

![](/files/-MJ2YaKJwYroY9zjX6FQ)


# Blood Splatter

### Blood Splatter Screen

Open the <mark style="color:green;">**UI Manager**</mark> to set any blood splatter screen. During the game, it will appear smoothly if the character's health is less than 30.

![](/files/XscraSsUNjNkZbFt1k0d)

### Hit Indicators

In the <mark style="color:green;">**UI**</mark> <mark style="color:green;">**Manager**</mark>, you can set a few **damage** **indicators**. They will appear during the game if a player gets damaged.

![](/files/8SzFK2sBCsvUxDU25prL)

You can choose from 2 border modes: <mark style="color:green;">**Circle**</mark> or <mark style="color:green;">**Full**</mark> <mark style="color:green;">**Screen**</mark>**.**

![Circle](/files/-MXwmir8EP9-a85Ra915)

![Full Screen](/files/-MXwoFy-V748ZhI0Hjb1)


# Pickup Items

Use the <mark style="color:green;">**Pickup Item**</mark> script to pick up ammo/health kits and weapons. This script has 2 pickup methods: <mark style="color:orange;">**"Raycast"**</mark>, <mark style="color:blue;">**"Collider"**</mark> or both.

To create a pickup object, place it into your scene and add the <mark style="color:green;">**Pickup Item**</mark> script.

![](/files/EUWcaPeYiKEC7jm2B9Y8)

#### Collider mode

When a character enters the area, he picks up an object.

![](/files/-M8rLtlQQPPPjUQ7GPU6)

#### Raycast mode

When the player is in the area and the crosshair is pointed at an object, click on the <mark style="color:green;">**\[E]**</mark> button to pick it up (you can edit the button in the <mark style="color:green;">**Input Manager**</mark> <mark style="color:orange;">**(Tools -> USK -> Project Settings -> Input)**</mark>.

![](/files/-M8rLhtSbXDQ2N_jdHjY)

### Ammo

You can create ammunition that is only suitable for a certain type of weapon.

* In the <mark style="color:green;">**Ammo Name**</mark> variable, write the ammunition name
* In the <mark style="color:green;">**Weapon Controller**</mark> script, write the same name

![](/files/7pv93YRre9je2bDO1sen)

If you leave an empty name, the ammo can be used for any weapon.

{% hint style="info" %}
**In-game tip**

If you pick up ammunition, and there is no suitable weapon in the inventory, it will be saved and hidden; And when you get the required weapon, the ammunition will be displayed.
{% endhint %}


# Surfaces

Surfaces are unique material presets that contain information about footsteps, bullet impact effects, penetration, and ricochet. Surfaces can be applied to any object in the scene.

![](/files/QQBcjOtTZ8762QKN0I0O)

The project contains several examples of surfaces.

![](/files/E2CGGvZReszdG4mmdCfL)

* To create a new surface press <mark style="color:orange;">**(Right Mouse -> Create -> USK -> Surface Preset)**</mark>*.*&#x20;

* To apply the surface to an object add the <mark style="color:green;">**Surface**</mark> component to it and set a <mark style="color:green;">**Surface Preset**</mark> in the <mark style="color:green;">**Material**</mark> variable.

![](/files/xHcy2Kl68QTSQDVbQ5NH)


# Animation Events

To better synchronize character animations and game actions, use various animation events.

### Step Sounds

Add the **PlayStepSound** event with the **float** parameter **Volume** to movement animations for characters and enemies so that footstep sounds plays during the game.

![](/files/-M0rEuBm8-FnM-XhEAwr)

### Grenades

To synchronize an animation and grenade throw add the **LaunchGrenade** event to a throw grenade animation.

![](/files/-M0rEWmOXv9mXXtkkF8V)

### Melee Attacks

To synchronize the sound of a melee attack (for characters and enemies) with animation add the **PlayAttackSound** event.

![](/files/-M0rT2Mn7CPeuWY1-p92)

### Shells

To synchronize an animation and shell spawn add the **SpawnShell** event to the shooting animation and disable the **Spawn Shells Immediately** toggle in the <mark style="color:green;">**Weapon Controller**</mark> script.

![](/files/-M0rFHOsLMmj4Vmk6wVK)

![](/files/-M0rFOsFHRO0Dr_hPdJQ)

## Weapons&#x20;

### Magazines&#x20;

To synchronize the appearance and hide the weapon magazine with the reloading animation, indicate the magazine in the <mark style="color:green;">**Weapon Controller**</mark> script...

![](/files/-M0rS6jG9z8H_n7IsW3A)

...and use the following events:

| Event                        | String Parameter  | Meaning                                           |
| ---------------------------- | ----------------- | ------------------------------------------------- |
| **ChangeMagazineVisibility** | **show**          | Show the default magazine                         |
|                              | **hide**          | Hide the default magazine                         |
|                              | **hideAndCreate** | Hide the default magazine and create a copy of it |
| **DropMagazine**             | **-**             | Drop a magazine from the weapon                   |

### Change Hands

If you use animation in which a character takes weapons in different hands, the following events will come in handy:

| Event            | String Parameter  | Meaning                                                                                                                                                                                                      |
| ---------------- | ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **ChangeParent** | **left**          | Set the left hand as a parent for the weapons                                                                                                                                                                |
|                  | **right**         | Set the right hand as a parent for the weapons                                                                                                                                                               |
|                  | **rightAndPlace** | <p>Set the right hand as a parent for the weapons and place it in a default position. </p><p></p><p>If after animation weapon has the wrong position or rotation, this event we'll help you to fix that.</p> |

![](/files/-M0rOYQ5EbtfAp3Duc5V)


# Project Update

This page is being edited

After importing the USK, you need to do a few actions to update materials and cameras:

* Open each character prefab in your project, set the <mark style="color:green;">**Render Type**</mark> of the **Layer Camera** to <mark style="color:green;">**Overlay**</mark>, and add it to the <mark style="color:green;">**Stack**</mark> to the **Main** **Camera**

![](/files/vJOo5vMsYlA37q3EcjVL) ![](/files/B9eVmMQ6poDoftxdAbDS)

* Update all materials in the project by pressing&#x20;

<mark style="color:orange;">**Edit -> Render Pipeline -> URP -> Upgrade Project Materials to UniversalRP Materials**</mark> or

<mark style="color:orange;">**Edit -> Render Pipeline -> HDRP -> Upgarde from Builtin pipeline  -> Upgrade Project Materials to HD Materials**</mark>

![](/files/vAXefjy0ZNRsUC9l1yCr)

* Download a new shader and activate it for all <mark style="color:green;">**grid materials**</mark> in the project.

{% file src="/files/olTfPlzce2KkOqH27QT9" %}

![](/files/tVTIVMaiEBskHi47uPG1)


# Post-processing Effects

Each character prefab has 3 cameras and you can use them to add post-processing effects to your game.

![](/files/tyxOfvMX38QgWXLJ0s8Y)

* The <mark style="color:green;">**"Main Camera"**</mark> is a general camera in the game
* The <mark style="color:green;">**"Aim Camera"**</mark> is used for weapons with scopes

![](/files/OSERnpYBblBP4Twr0d4n) ![](/files/qS3Z7YiMGqGOyxKsLKra)

* The <mark style="color:green;">**"Layer Camera"**</mark> is used when a character is close to walls and objects

![](/files/SQH1tLKwvnRWjKLKsDgG) ![](/files/qKvXU13B5DnT95OgXMHz)


# Video Guides

This page is being edited

Here are collected all the video tutorials that you can find in this documentation.


# FAQ

## Red errors appear after joining multiplayer rooms

<figure><img src="/files/XVImGCgP5ojlZAvcjthJ" alt=""><figcaption></figcaption></figure>

These errors has no effect on gameplay and has nothing to do with USK, because they appear in Photon scripts, so just ignore them.

## The character gets stuck in the air while jumping, or walks and automatically jumps (and then falls into the ground)

Some characters have an incorrectly assigned **hips** **bone** and the character controller does not correctly calculate the floor height.&#x20;

![](/files/-M_F3dAdXICLOe0YhdPJ)

**So the best solution is to open the avatar editor and set the correct bone there:**

![](/files/-M_F44B2dgH9O98qqwuO)

![](/files/-M_F49qfT8ObRpe-x1yj)

## Errors after import

After importing the project, you may see red errors: no big deal, all those errors are standard Unity import errors and they can be cleared up by clicking the "Clear" button.

## 'CharacterHelper' does not contain a definition for...&#x20;

![](/files/-MBTol2H7DMLs78NX5i5)

## Troubles with the Package Manager

To solve any issue with Package Manager set the **Scripting Runtime Version** to **.Net 4.x** in the Project Settings

![](/files/-M1UsCHx5pyF2l1g2E2p)

or try to reset Packages by pressing **\[Help -> Reset Packages to defaults]**

![](/files/-LrW2tmkWh6a9uhnlPn0)

## How to adjust the mobile stick range?

Open the **Mobile** **Input** menu by pressing **\[Edit -> USK Project Settings -> UI]** and set the range there:

![](/files/-M_F2Eg2WBgFt2RDLtVX)

## I can't find my question here.

Don't worry, just email us ([**gercstudio@gmail.com**](mailto:gercstudio@gmail.com?subject=Universal%20Shooter%20Kit%20-%20Question%20)) and we'll help you 😉


