# Detailed Setup

## Quick Tips & Troubleshooting

{% hint style="info" %}
**QUICK START:** You can add the **Door Kit - Demo Scene - Prefab** to your project, to get a quick start with every part connected.&#x20;
{% endhint %}

### TextMeshPro Required

{% hint style="info" %}

* Please note that TMP will appear as a popup if not installed in your project
* Click **Import TMP Essentials** to use the system fully
  {% endhint %}

### Door Prefab Rotation

{% hint style="info" %}

* Some door objects may appear flat when dragged from the prefabs folder
  * **Set X rotation to -90 to fix this issue**
    {% endhint %}

## System Setup

### Step 1 - Setting Up The Player

{% hint style="info" %}

1. Make sure you have a **FPSController**
2. Add a **DoorInteractor** script (This may be on the Main Camera already)
   1. **Ray Distance:** This is how far you can interact with objects
   2. **Interaction Key:** What key should we use for interaction clicks. **Default: Mouse 0**
      {% endhint %}

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

### Step 2 - Door Inventory Setup

{% hint style="info" %}

1. Add a **DoorInventory** object from the prefabs folder (Details are explained below)
   {% endhint %}

|                   |                                                                                                                                                                                                                            |
| ----------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Inventory Key** | What key press do we need to open the inventory                                                                                                                                                                            |
| **Key List**      | Will fill when you collect object (Leave blank)                                                                                                                                                                            |
| **Key Events**    | You can add the **Door UI Manager** to both slots and find the method (At the top of the list) for **AddInventorySlot** & **RemoveInventorySlot** to the respective area                                                   |
| **Persistence**   | <ol><li>Choose whether you want this object to save between scenes</li><li>Whether you want to enable automatic saving (Remember all Key ScriptableObjects need to be in the resources folder to save correctly)</li></ol> |
| **Debugs**        | Using the custom editor buttons will allow you to check for a saved file, delete it or search the location for a saved file                                                                                                |

{% hint style="info" %}
Details about the [JSON Saving system](/door-interaction-kit-doc/managers-explained/json-save-system.md) can be found on the page linked
{% endhint %}

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

### Step 3 - Door UI Manager Setup

{% hint style="info" %}

1. Add a **DoorUIManager** object from the prefabs folder (If not already added & Details are explained below)
   {% endhint %}

|                                           |                                                                                                                                                                                                                                                                                                                               |
| ----------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Object Interaction Prompts**            | <ul><li><strong>InteractTextBG:</strong> UI background for interaction text</li><li><strong>Interaction UI:</strong> UI interactionnametext object</li><li><strong>IconImage:</strong> UI - Icon that can be displayed</li><li><strong>KeyPromptUI:</strong> For the key prompts when collecting, using or removing</li></ul> |
| **Notification UI**                       | <ul><li><strong>NotificationTextUI:</strong> Notification TextMeshPro gameobject from the UI</li><li><strong>NotificationUIBG:</strong> The background UI object</li></ul>                                                                                                                                                    |
| **Notification UI - Text Customisation:** | Set the size, type, style and colour                                                                                                                                                                                                                                                                                          |
| **Inventory Fields**                      | <ul><li>Add the Inventory slot prefab from the prefabs folder</li><li>Add the Inventory Panel UI object</li><li>Fading duration when opening and closing the inventory</li></ul>                                                                                                                                              |
| **Timer**                                 | The timers for showing the popup UI of notifications on screen                                                                                                                                                                                                                                                                |
| **Crosshair U**                           | Add the Crosshair UI here                                                                                                                                                                                                                                                                                                     |

<figure><img src="/files/22pzYMXJZ2RW9c8fS5WT" alt=""><figcaption></figcaption></figure>

### Step 4 - Door Audio Manager Setup

{% hint style="info" %}

1. Add a **Door Audio Manager** object to your scene (If not already)

You can add the Sounds - ScriptableObjects to this to make them playable
{% endhint %}

{% hint style="info" %}
More information on [Audio Scriptables here](/door-interaction-kit-doc/managers-explained/audio-scriptableobjects.md)
{% endhint %}

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

### Step 5 - Adding Doors

{% hint style="info" %}

1. Add a **Door** object to your project - This will require the following components
   1. Box Collider
   2. **InteractablePrompt** script (Optional Component)
   3. **DoorInteractable** script
      {% endhint %}

### Step 5.1 - Interactable Prompt Settings (Optional Component)

{% hint style="info" %}
More information on the Interactable Prompt [here](/door-interaction-kit-doc/getting-started/interactable-prompt.md)
{% endhint %}

|                                  |                                                                                                                         |
| -------------------------------- | ----------------------------------------------------------------------------------------------------------------------- |
| **Enable Prompt**                | Whether you want to interact prompt to show                                                                             |
| **Icon Parameters**              | Enable whether you want to show the icon from the UI manager                                                            |
| **Key Prompt Parameters**        | <ul><li>Whether you want to show the KeyPromptText</li><li>Add text below to prompt for the player</li></ul>            |
| **Interaction Name Parameters:** | <ul><li>Whether you want to show some kind of interaction text</li><li>Add the interaction text to this field</li></ul> |

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

### Step 5.2 - DoorInteractable Settings

|                       |                                                                                                                                                                               |
| --------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Interactable Type     | Select a Door or Drawer                                                                                                                                                       |
| Door Transform        | Add the door to this slot here or the pivot point (If you're using a parent object)                                                                                           |
| Door Opening Settings | Set the angle, axis, speeds for opening and closing                                                                                                                           |
| Sound Delay Settings  | Add the sounds scriptable objects and delay the audio if you like                                                                                                             |
| Plank Settings        | If you want to use planks over the doors to block it. Show it and set how many are above (Adding 1 or more to the plank count will make this become active)                   |
| Lock Settings         | <ul><li>Choose whether to enable locking, set the text to appear via notification for when this is locked or unlocked. </li><li>Choose to remove the key and the SO</li></ul> |
| Spawning Items        | Choose an item you want to appear at a spawn location - More information [here](/door-interaction-kit-doc/getting-started/how-to-spawn-objects.md)                            |

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

### Step 6 - Creating Keys

{% hint style="info" %}

1. Add a 3D object of a key to your scene and make sure it is setup as below:&#x20;
   1. **Box Collider**
   2. **InteractablePrompt** script (Optional Component)
   3. **Key Collectable** script
      1. **KeyScriptable:** Add the relevant ScriptableObject to this slot
      2. **PickupSound:** Add a pickup sound of your choice
         {% endhint %}

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

{% hint style="info" %}
More information can be found on [this page](/door-interaction-kit-doc/getting-started/how-to-create-a-key.md)
{% endhint %}

### Step 7 - Spawning Objects

{% hint style="info" %}
**Spawning Objects Suggestion:**

Spawning items in drawers, make sure the drawer has a mesh collider because you don't want another collider blocking the interaction

* Box Colliders have a larger area and can block more precise interactions
* Box colliders are good for general interactions&#x20;
* Mesh colliders are more expensive but required when doing things like items in drawers
  {% endhint %}

{% hint style="warning" %}
You can find more information on [setup here](/door-interaction-kit-doc/getting-started/how-to-spawn-objects.md)
{% endhint %}


---

# Agent Instructions: Querying This Documentation

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

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

```
GET https://speedtutoruk.gitbook.io/door-interaction-kit-doc/getting-started/detailed-setup.md?ask=<question>
```

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

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