using UnityEngine; public class DoorUse : MonoBehaviour { private bool insideDoorArea; public GameObject openDoor; public GameObject closedDoor; public GameObject interactionUI; public InteractionTextControl textControl; private AudioSource doorAudio; public AudioClip doorOpen, doorClose, doorLock; private bool doorLocked; public bool keyNeeded; private bool playerHasKey; public bool permaLocked; public string lockedText = "Seems Locked."; private void Awake() { doorAudio = GetComponent<AudioSource>(); if (keyNeeded || permaLocked) LockDoor(true); } private void OnTriggerEnter(Collider other) { insideDoorArea = true; interactionUI.SetActive(true); } private void OnTriggerExit(Collider other) { insideDoorArea = false; interactionUI.SetActive(false); } private void Update() { if (!doorLocked) { if (Input.GetKeyDown(KeyCode.E) && !closedDoor.activeSelf && insideDoorArea) { CloseDoor(); } else if (Input.GetKeyDown(KeyCode.E) && !openDoor.activeSelf && insideDoorArea) { //disable door and enable open door object openDoor.SetActive(true); closedDoor.SetActive(false); doorAudio.clip = doorOpen; doorAudio.pitch = Random.Range(0.9f, 1.1f); doorAudio.Play(); } } else { if (Input.GetKeyDown(KeyCode.E) && insideDoorArea) { doorAudio.clip = doorLock; doorAudio.pitch = Random.Range(0.9f, 1.1f); doorAudio.Play(); if (!keyNeeded) textControl.DisplayText(lockedText); else textControl.DisplayText("I need the key."); } } } public void CloseDoor() { openDoor.SetActive(false); closedDoor.SetActive(true); doorAudio.clip = doorClose; doorAudio.pitch = Random.Range(0.9f, 1.1f); doorAudio.Play(); } public void LockDoor(bool state) { doorLocked = state; } public bool GetDoorLockedState() { return doorLocked; } public void SetPlayerHasKey(bool state) { if (!permaLocked) LockDoor(false); } }