Exemplo n.º 1
0
    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);
    }
Exemplo n.º 2
0
    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;
    }