DOORS Project is an Unity toolkit that lets you treat any prefab or mesh as a fully‑featured door. Install the package, run the wizard, and you immediately get:
Automatic layer/tag/input setup.
One‑click conversion of objects into doors with animations, colliders, and NavMesh logic.
A clean, event‑driven API (ScriptableObject channels) instead of brittle direct references.
Helper components for player click‑to‑move, AI wandering, camera system.
Every piece ships with C# sources and XML‑doc comments, so you can dive in, fork, and extend.
| STORE LINKS: |
| Unity Asset Store |
| FAB |
| SUPPORT: |
| Discord |
One‑Click Door Creation – Door Wizard converts any selected mesh or prefab into a ready‑to‑use door: colliders, NavMeshObstacle, default SFX hooks, and event registration.
Dual & Lever Modes – toggle IsDualLeaf, IsLeverControlled, and timing fields directly in the custom inspector.
Collider / NavMesh Auto‑Toggle – colliders and obstacles enable/disable at the correct animation frames so agents never clip.
Highlight Strategies – swap materials or pulse emission when the user hovers/interacts. Plug your own IHighlightStrategy implementation.
Interactive Objects:
Systems for doors, drawers, closets, traps, and chests.
Door Script: Customizable pivot points, animation curves, sound effects, mouse cursor updates, custom knobs and highlighting.
Door Lever: Player-controlled door interactions with configurable rotation mechanics and feedback.
Door Trigger: Automatic door operations based on proximity, with extensive customization (Tag Filtering, Delay, Unity Events).
Player Interaction & Control:
PlayerActions: Handles object interactions with UI prompts and proximity checks.
ClickAgentController: Offers seamless movement using NavMeshAgent or CharacterController.
ProximityStopper: Halts or resumes movement based on distance to interactable objects.
LayeredNavMeshObstacle: Dynamically adjusts pathfinding in response to obstacles or open/closed doors.
Event‑Driven Architecture – DoorEventChannel, InteractionEventChannel, MovementControlEventChannel, and ProximityEventChannel decouple doors, UI, AI, and SFX for testable, reusable code.
Setup Wizard – one button configures required layers ("Usable"), tags, bulk‑converts meshes to functional doors;
injects NavMeshAgent, ClickAgentController, and PlayerInput into any gameobject prefab so it becomes player‑controllable.
Hierarchy Icons – coloured glyphs for doors, levers, and triggers so you can spot interactables instantly in the Scene view.
| Channel | Key Events | Payload | Typical Flow |
|---|---|---|---|
DoorEventChannel |
OnOpen, OnClose |
Door door, Vector3 userPos, bool forced |
Player → Door lever → RaiseOpen() |
InteractionEventChannel |
OnInteract |
Transform origin |
UI prompt → PlayerController |
MovementControlEventChannel |
OnStopRequest, OnResumeRequest |
bool shouldStop |
Door → AI navigation |
ProximityEventChannel |
OnEnter, OnExit |
Collider other, bool entered |
Door trigger → UI / AI |
[SerializeField] private DoorEventChannelSO doorEvents;
private void OnEnable() => doorEvents.OnOpen += OnDoorOpened;
private void OnDisable() => doorEvents.OnOpen -= OnDoorOpened;
private void OnDoorOpened(Door door, Vector3 userPos, bool forced)
{
// Example: Log analytics or play global SFX
Debug.Log($"{door.name} opened at {userPos}");
}
Short, copy‑paste snippets for common tasks.
Spawn a door at runtime
var door = Instantiate(doorPrefab, spawnPosition, spawnRotation);
door.Open(force: true); // optional immediate open
Play custom SFX when any door opens
doorEvents.OnOpen += (door,pos,forced) => audioSrc.PlayOneShot(openClip);
AI Behavior:
RandomWanderAI (Example): Basic roaming AI using NavMeshAgent with easy animation integration.
Camera Systems:
SmoothFollowCamera (Example): Smooth, dynamic tracking of the player with adjustable offsets.
FaceCamera_Late: Ensures UI elements, billboards, or key objects always face the camera.
5 Seconds Onboarding – wizard + replacer → operational door or player.
Designer‑Driven – all tuning exposed in inspectors; no code required for typical workflows.
Event‑Driven = Testable – add/remove systems without refactor pain; ideal for unit and integration tests.
AI‑Compatible – doors are NavMesh‑aware and provide movement‑control events; agents never walk through closed geometry.
Extensible Source – permissive licence, well‑commented code, and separation of Editor vs Runtime assemblies.