using UnityEngine; using UnityEngine.SceneManagement; public static class HubReturnData { public static int lastDoorIndex = -1; public static Vector3 lastDoorPosition = Vector3.zero; } public class LevelDoor : MonoBehaviour { public string levelSceneName; // Set this in the Inspector for each door public Sprite openDoorSprite; public Sprite closedDoorSprite; public bool isOpen = true; public int levelIndex = 0; private SpriteRenderer spriteRenderer; private bool playerInRange = false; void Start() { spriteRenderer = GetComponent(); UpdateDoorState(); } void Update() { if (isOpen && playerInRange && Input.GetKeyDown(KeyCode.E)) { HubReturnData.lastDoorIndex = levelIndex; GameObject player = GameObject.FindGameObjectWithTag("Player"); if (player != null) HubReturnData.lastDoorPosition = player.transform.position; SceneManager.LoadScene(levelSceneName); } } void OnTriggerEnter2D(Collider2D other) { if (other.CompareTag("Player")) playerInRange = true; } void OnTriggerExit2D(Collider2D other) { if (other.CompareTag("Player")) playerInRange = false; } public void CloseDoor() { isOpen = false; UpdateDoorState(); } private void UpdateDoorState() { if (spriteRenderer != null) spriteRenderer.sprite = isOpen ? openDoorSprite : closedDoorSprite; } }