using System.Collections; using System.Collections.Generic; using UnityEngine; public class DoorPuzzleController : MonoBehaviour { public GameObject switch1; public GameObject door1; public GameObject switch2; public GameObject door2; public Vector3 door1ClosedPosition; public Vector3 door2ClosedPositon; public bool inSwitch1; public bool inSwitch2; public LayerMask playerMask; public float radius; public bool switch2Enabled; public bool door1Opened = false; public bool door2Opened = false; // Use this for initialization void Start () { door1ClosedPosition = door1.transform.position; door2ClosedPositon = door2.transform.position; } // Update is called once per frame void Update () { inSwitch1 = Physics2D.OverlapCircle(switch1.transform.position, radius, playerMask); inSwitch2 = Physics2D.OverlapCircle(switch2.transform.position, radius, playerMask); DoorLogic(); } public void DoorLogic() { switch2Enabled = !door1Opened; if (inSwitch1) { if (Input.GetKeyDown(KeyCode.Q)) { door1Opened = !door1Opened; } } if (inSwitch2 && switch2Enabled) { if (Input.GetKeyDown(KeyCode.Q)) { door2Opened = !door2Opened; } } if (door1Opened) { OpenDoor1(); } else if (!door1Opened) { CloseDoor1(); } if (door2Opened) { OpenDoor2(); } else if (!door2Opened) { CloseDoor2(); } } public void OpenDoor1() { door1.transform.position = new Vector2 (door1.transform.position.x, Mathf.Lerp(door1.transform.position.y, (door1ClosedPosition.y - 1), 2*Time.deltaTime)); } public void CloseDoor1() { door1.transform.position = new Vector2(door1.transform.position.x, Mathf.Lerp(door1.transform.position.y, (door1ClosedPosition.y), 2 * Time.deltaTime)); } public void OpenDoor2() { door2.transform.position = new Vector2(door2.transform.position.x, Mathf.Lerp(door2.transform.position.y, (door2ClosedPositon.y - 1), 2 * Time.deltaTime)); } public void CloseDoor2() { door2.transform.position = new Vector2(door2.transform.position.x, Mathf.Lerp(door2.transform.position.y, (door2ClosedPositon.y), 2 * Time.deltaTime)); } private void OnDrawGizmos() { Gizmos.DrawWireSphere(switch1.transform.position,radius); Gizmos.DrawWireSphere(switch2.transform.position,radius); } }