> For the complete documentation index, see [llms.txt](https://fast-studios.gitbook.io/press-e/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://fast-studios.gitbook.io/press-e/manual/components/interaction-manager.md).

# Interaction Manager

This script is the **core controller** for interactions. Without it, interactions in the scene **won’t** work. We recommend placing it in the **first scene** of your Build because it’s a **singleton** with **Dont Destroy On Load**: there must be **only one**, and it stays loaded across scenes.

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

## Main Tab

* **Key To Interact**: the key used to interact.
* **Interaction Distance**: the maximum distance at which the player can interact.

### Player Foldout

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

This foldout defines **how the player object is found**. Available modes:

* **Game Object**: direct reference to the player object. If the player object is **not** DDOL, you must reassign it after changing scenes.
* **Tag**: finds an object with the chosen tag to be the player.
* **Layer**: finds an object with the chosen layer to be the player.
* **Object Name**: finds an object by **name** to be the player.
* **MonoBehaviour**: finds an object that has the chosen **MonoBehaviour** script.
* **Reference**: in each scene that has a player, add a **Reference** script (it doesn’t need to be on the player). Assign the player in that Reference; on **Start**, it will automatically set the current player object.

### Camera

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

Controls which camera Press E uses for interaction detection, grab direction, UI positioning, throwing direction, and camera stacking.

* **Detection**: chooses how Press E finds the camera.
  * **Camera**: camera reference used when the selected detection mode needs a direct camera reference.
  * **Tag**: tag used to find the camera when Detection is set to Tag.
  * **Layer**: layer used to find the camera when Detection is set to Layer.
  * **Object Name**: object name used to find the camera when Detection is set to Name.

### Materials

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

Controls the materials used by the [Grab placement](/press-e/manual/components/interactable/grab.md#can-place) preview.

* **Grab Right Placement**: material used when the current placement position is valid.
* **Grab Wrong Placement**: material used when the current placement position is invalid.

### Grab Hand Transform

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

Defines the manager’s default transform reference for transform-based grabbing.

This is useful when you want grabbed objects to follow a specific hand point, hold point, near the player instead of only staying at a distance in front of the camera.

* **Use Grab Reference**: enables the manager grab reference setup.
  * **Item Player Grab Transform**: default transform used as the grab reference for objects that use transform-based grabbing.

### Camera Stacking

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

Camera Stacking helps grabbed objects render on top of the environment, reducing clipping when an object is held close to walls or other geometry.

When enabled, Press E creates and syncs a secondary camera based on the main camera. Grab objects are moved to the selected stacking layer while they are being held, then returned to their original layer when released.

* **Enabled**: enables or disables the camera stacking system.
* **Layer**: layer used by the camera stacking system for grabbed objects.

You do not need to change object layers manually. Press E handles this automatically while the object is being grabbed. Camera Stacking can also be overridden per Interactable.

### UI Foldout

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

Defines the **default UI prefabs**. Whenever a UI type is displayed, the Manager instantiates the matching prefab.

* **Screen Prompt Prefab** → **Screen Prompt**: on-screen notice (e.g., *Press E to interact*).
* **World Prompt Prefab** → **World Prompt**: world-anchored notice positioned relative to an object.
* **Inspection Prefab** → **Inspection**: inspection UI; can show **text** and/or an **image**.
* **Interaction Prefab** → **Interaction**: UI shown **during** interactions (e.g., while carrying/dragging); if enabled, it stays visible for the duration.

## Events Tab

### Block/Unblock Player Movement

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

Define **when** and **how** to **block/unblock** player movement (e.g., when starting an *Inspection*). You can drag **any function or component** here, it’s a standard **UnityEvent**.

### On Scene Change

<figure><img src="/files/9PJdDCfGFh4NYPdHSRCY" alt=""><figcaption></figcaption></figure>

Optional event for running **specific functions** when a **scene change** occurs.
