public bool PressedButton(CombinationLockButton buttonPressed) { for (int i = 0; i < locks.Length; i++) { bool unlockLock = false; if (locks[i]) { continue; } if (!mustBeInOrder && !buttonsPressed.Contains(buttonPressed)) { buttonsPressed.Add(buttonPressed); unlockLock = true; } if (buttonOrder[i] == buttonPressed) { unlockLock = true; } if (unlockLock) { locks[i] = true; doorLights[i].color = Color.green; correct.Play(); if (i == locks.Length - 1) { door.StartDoorOpen(); opened = true; return(true); } } else { incorrect.Play(); if (mustBeInOrder) { ResetAllLocks(); } } break; } return(false); }
IEnumerator DoorOpenCutscene() { doorClosed = false; Camera camera = Camera.main; camera.enabled = false; GameObject obj = new GameObject(); Camera tempCamera = obj.AddComponent <Camera>(); tempCamera.transform.position = buttonCameraPos.position; tempCamera.transform.rotation = buttonCameraPos.rotation; playerControlLerpSmoothAnim player = FindObjectOfType <playerControlLerpSmoothAnim>(); player.transform.position = playerStandAt.position; player.transform.rotation = playerStandAt.rotation; player.enabled = false; yield return(new WaitForSeconds(0.2f)); if (buttonLight) { buttonLight.color = Color.green; } if (particles) { particles.Play(); } if (GetComponent <AudioSource>()) { GetComponent <AudioSource>().Play(); } Vector3 insideWall = buttonObject.transform.position + (transform.forward * 0.2f); Vector3 original = buttonObject.transform.position; while (Vector3.Distance(buttonObject.transform.position, insideWall) > 0.1f) { buttonObject.transform.position = Vector3.MoveTowards(buttonObject.transform.position, insideWall, Time.deltaTime * 4); yield return(0); } while (Vector3.Distance(buttonObject.transform.position, original) > 0.1f) { buttonObject.transform.position = Vector3.MoveTowards(buttonObject.transform.position, original, Time.deltaTime * 4); yield return(0); } if (doorCollapse) { doorCollapse.GetComponent <Rigidbody>().isKinematic = false; yield return(new WaitForSeconds(3f)); } yield return(new WaitForSeconds(0.5f)); wait = true; StartCoroutine(MoveCamera(tempCamera, doorCameraPos)); while (wait) { yield return(0); } door.StartDoorOpen(); while (!door.complete) { yield return(0); } Destroy(tempCamera); camera.enabled = true; player.enabled = true; yield break; }