DOORS Project

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 CreationDoor 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 ArchitectureDoorEventChannel, 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.

  1. 5 Seconds Onboarding – wizard + replacer → operational door or player.

  2. Designer‑Driven – all tuning exposed in inspectors; no code required for typical workflows.

  3. Event‑Driven = Testable – add/remove systems without refactor pain; ideal for unit and integration tests.

  4. AI‑Compatible – doors are NavMesh‑aware and provide movement‑control events; agents never walk through closed geometry.

  5. Extensible Source – permissive licence, well‑commented code, and separation of Editor vs Runtime assemblies.