Ejemplo n.º 1
0
 public void MoveToLeftRightChamber(DoorBehaviour door)
 {
     Blink(false);
     StartCoroutine(InterpolatePositionChangingChamber(0.5f, door.nextDoor.playerPosition.position, door));
     lastDoorPos = door.GetPosition();
     //GetComponent<CapsuleCollider2D>().enabled = false;
 }
Ejemplo n.º 2
0
    IEnumerator FadeOut(float time, bool transition, DoorBehaviour door)
    {
        Color c            = blackScreen.GetComponent <Image>().color;
        Color initialColor = c;
        Color finalColor   = new Color(0, 0, 0, 0);
        float elapsedTime  = 0.0f;

        while (elapsedTime < time)
        {
            elapsedTime += Time.deltaTime;
            c            = Color.Lerp(initialColor, finalColor, elapsedTime / time);
            blackScreen.GetComponent <Image>().color = c;
            yield return(null);
        }
        blackScreen.GetComponent <Image>().color = finalColor;
        if (transition)
        {
            player.GetComponent <PlayerPlatformController>().SetInputActivated(true);
            mainCamera.GetComponent <CameraBehaviour>().SetFollowTarget(true);
            if (door != null)
            {
                door.TurnOnTurnOff();
            }
        }
    }
Ejemplo n.º 3
0
    public void Interact()
    {
        Transform player = GameObject.FindGameObjectWithTag("Player").GetComponent <Transform>();

        if (open)
        {
            Close();
            Debug.Log("Close local");
            if (linkedDoorActive != null)
            {
                Debug.Log("Linked not null: " + linkedDoorActive.ID);
                linkedDoorActive.Close();
            }
        }
        else
        {
            clockwise        = Vector3.Dot(player.position - transform.position, transform.right) > 0;
            linkedDoorActive = clockwise ? linkedDoorClockwise : linkedDoorAnticlockwise;

            Open();

            if (linkedDoorActive != null)
            {
                linkedDoorActive.clockwise        = clockwise;
                linkedDoorActive.linkedDoorActive = clockwise ? linkedDoorActive.linkedDoorClockwise : linkedDoorActive.linkedDoorAnticlockwise;
                linkedDoorActive.Open();
            }
        }
    }
Ejemplo n.º 4
0
    IEnumerator FadeIn(float time, bool transition, DoorBehaviour door)
    {
        Color c            = blackScreen.GetComponent <Image>().color;
        Color initialColor = c;
        Color finalColor   = new Color(0, 0, 0, 1);
        float elapsedTime  = 0.0f;

        while (elapsedTime < time)
        {
            elapsedTime += Time.deltaTime;
            c            = Color.Lerp(initialColor, finalColor, elapsedTime / time);
            blackScreen.GetComponent <Image>().color = c;
            yield return(null);
        }
        blackScreen.GetComponent <Image>().color = finalColor;
        if (transition)
        {
            player.GetComponent <PlayerPlatformController>().SetPosition(door.nextDoor.playerPosition.position);
            mainCamera.GetComponent <CameraBehaviour>().SetPosition(door.nextDoor.cameraPosition.position);
            if (door != null)
            {
                door.nextDoor.chamber.SetCameraSize();
            }
            yield return(new WaitForSeconds(0.1f));

            StartCoroutine(FadeOut(time, transition, door));
        }
    }
Ejemplo n.º 5
0
    //Retire l'ennemie qui vient d'être détruit de la liste
    public void RemoveFromList(GameObject toRemove)
    {
        //Retire l'ennemie de la liste
        remainingEnnemies.Remove(toRemove);
        //Si c'est le dernier ennemi qui a été détruit
        if (hasFinishedSpawning && remainingEnnemies.Count == 0)
        {
            //Change le numéro de la vague actuelle
            waveNumber++;
            //Si le joueur à terminer toutes les vagues
            if (waveNumber == waves.Length)
            {
                //Lance l'écran de victoire
                onFinishingAllWaves.Invoke();
            }

            //Repasse le jeu en Parabellum
            musicManager.EndOfWave();
            GameManager.Instance.onStateChange.Invoke(GameState.Parabellum);
            DoorBehaviour.DoorOpen();
            //Mise en place de la musique et du temps d'antebellum pour la vague suivante
            MusicManager.levelMusic     = (waves[waveNumber].music);
            GameManager.timerAntebellum = (waves[waveNumber].antebellumTime);

            //Permet au joueur de lancer la prochaine vague
            GameManager.canAntebellum = true;
            hasFinishedSpawning       = false;
        }
    }
Ejemplo n.º 6
0
 // Start is called before the first frame update
 void Start()
 {
     door   = GameObject.Find("Door");
     player = GameObject.Find("Player");
     wall   = GameObject.FindGameObjectsWithTag("wall");
     db     = door.GetComponent <DoorBehaviour>();
     roof   = GameObject.FindGameObjectWithTag("roof");
 }
Ejemplo n.º 7
0
 void OnTriggerEnter(Collider col)
 {
     if (col.tag == "Door")
     {
         Debug.Log("Enemy Open Door");
         DoorBehaviour doorScript = col.GetComponent <DoorBehaviour>();
         doorScript.interactDoor();
     }
 }
Ejemplo n.º 8
0
    public void MoveToDoor(Vector3 myTouch, Transform[] doorPoints, DoorBehaviour selectedDoor)
    {
        isMovingToDoor = true;

        currentDoor = selectedDoor;

        for (int i = 0; i < operatorList.Length; i++)
        {
            //operatorList[i].GetComponent<NavMeshAgent>().SetDestination(myTouch);
            operatorList[i].GetComponent <NavMeshAgent>().SetDestination(doorPoints[i].position);
        }
    }
Ejemplo n.º 9
0
 public void Antebellum(InputAction.CallbackContext obj)
 {
     if (canAntebellum)
     {
         canAntebellum = false;
         //Passe en Antebellum
         activeState = GameState.Antebellum;
         onStateChange.Invoke(GameState.Antebellum);
         DoorBehaviour.DoorClose();
         //Compte à rebours avant la partie Bellum
         StartCoroutine(CountdownAntebellum());
     }
 }
Ejemplo n.º 10
0
 // when the GameObjects collider arrange for this GameObject to travel to the left of the screen
 void OnTriggerEnter2D(Collider2D col)
 {
     if (col.gameObject.tag.Equals("Door"))
     {
         // It's a door!
         DoorBehaviour doorBehaviour = col.gameObject.GetComponent <DoorBehaviour>();
         doorBehaviour.OpenScene();
     }
     else
     {
         Debug.Log("Else: " + col.gameObject.tag);
         Debug.Log(col.gameObject.name);
     }
 }
    public void Kicking(DoorBehaviour doorObject)
    {
        if (!_player.IsKicking && !_player.IsBreakingArm)
        {
            _currCollidedDoor      = doorObject;
            _rigidbody2d.velocity  = new Vector2(0, 0);
            _player.AllowMovement  = false;
            _player.Speed          = 0;
            _playerHorizontalInput = 0;
            _animator.SetFloat("Speed", _player.Speed);

            _player.IsKicking = true;
            _animator.SetBool("IsKicking", _player.IsKicking);
        }
    }
 private void OnTriggerEnter(Collider col)
 {
     if (col.gameObject.CompareTag("Door"))
     {
         for (int i = 0; i < playerPickups.Keys.Count; i++)
         {
             Door = col.gameObject.GetComponentInParent <DoorBehaviour>();
             if (playerPickups.Keys[i] == Door.requiredKey)
             {
                 playerPickups.Keys.Remove(playerPickups.Keys[i]);
                 Door.doorsLocked = false;
                 return;
             }
         }
     }
 }
Ejemplo n.º 13
0
 public void ChangingChamber(DoorBehaviour door)
 {
     if (player.GetComponent <PlayerPlatformController>().GetInputActivated())
     {
         player.GetComponent <PlayerPlatformController>().SetInputActivated(false);
         //player.GetComponent<CapsuleCollider2D>().gameObject.SetActive(false);
         mainCamera.GetComponent <CameraBehaviour>().SetFollowTarget(false);
         //.GetComponent<CameraBehaviour>().SetBoundaries(door.nextChamber);
         if (door.doorType % 2 == 0) //Es front door o back door
         {
             StartCoroutine(FadeIn(0.5f, true, door));
         }
         else
         {
             player.GetComponent <PlayerPlatformController>().MoveToLeftRightChamber(door);
             mainCamera.GetComponent <CameraBehaviour>().MoveToLeftRightChamber(door);
         }
     }
 }
        private void Awake()
        {
            if (instance == null)
            {
                instance = this;

                //获取所有敌人Spawn Point
                GameObject[] spawnPointObj = GameObject.FindGameObjectsWithTag("enemy_spawn");
                spawnPoints = new SpawnPointManager[spawnPointObj.Length];
                for (int i = 0; i < spawnPointObj.Length; i++)
                {
                    spawnPoints[i] = spawnPointObj[i].GetComponent <SpawnPointManager>();
                    if (spawnPoints[i] == null)
                    {
                        Debug.LogWarning(spawnPointObj[i].name + " is not a spawn point!");
                    }
                }

                //获取玩家SpawnPoint
                GameObject playerSpawnObj = GameObject.FindGameObjectWithTag("player_spawn");
                if (playerSpawnObj != null)
                {
                    playerSpawn = playerSpawnObj.GetComponent <SpawnPointManager>();
                }
                else
                {
                    Debug.LogWarning("This scene doesn't have player!");
                }

                sceneChange = GetComponentInChildren <Change_Scene>();
                door        = GetComponentInChildren <DoorBehaviour>();
                deathUI.SetActive(false);
            }
            else
            {
                Destroy(this);
            }
        }
Ejemplo n.º 15
0
 public void Open()
 {
     if (LinkedDoor == null)
     {
         // Worst case scenario, we check all the neightbor rooms (4) and all their rooms (4) aka. 16 iterations.
         foreach (var neighbor in Room.Node.neighbors)
         {
             foreach (var door in neighbor.doors)
             {
                 // There is probably a better way to do this.. honestly
                 if (Vector3.Distance(door.transform.position, transform.position) < 3f)
                 {
                     //Debug.Log("Bingo.");
                     LinkedDoor = door;
                 }
             }
         }
         // Provide a reference to ourselves in the neighboring door
         LinkedDoor.LinkedDoor = this;
     }
     LinkedDoor.IsOpen = !IsOpen;
     IsOpen            = !IsOpen;
 }
Ejemplo n.º 16
0
    public void MoveToLeftRightChamber(DoorBehaviour door)
    {
        Vector3 finalPosition = new Vector3(door.nextDoor.cameraPosition.position.x, GetComponent <Transform>().position.y, GetComponent <Transform>().position.z);

        StartCoroutine(InterpolatePositionChangingChamber(finalPosition, door.nextDoor.chamber.GetCameraSize(), 0.5f));
    }
Ejemplo n.º 17
0
 void Start()
 {
     db = transform.parent.GetComponent <DoorBehaviour>();
 }
Ejemplo n.º 18
0
    public void ChangeRoom(DoorBehaviour door)
    {
        if (door.doorLocation == DoorLocation.Top)
        {
            GameObject _newRoom = null;

            //disable player script
            pB.enabled = false;

            //check if there's not already a room on top of this one
            bool _roomAlreadyThere = false;

            for (int i = 0; i < gm.spawnedRooms.Count; i++)
            {
                if (gm.spawnedRooms[i].transform.position == transform.position + new Vector3(0, 20, 0))
                {
                    _roomAlreadyThere = true;
                    _newRoom          = gm.spawnedRooms[i];
                    _newRoom.SetActive(true);
                    RoomManager nrRM = _newRoom.GetComponent <RoomManager>();
                    nrRM.doorOn      = false;
                    nrRM.justEntered = true;
                    nrRM.StartCoroutine(nrRM.doorCooldown());
                }
            }

            //spawn room on top of this one with a bottom door
            if (!_roomAlreadyThere)
            {
                int          randomRoomType      = Random.Range(0, 8);
                GameObject[] randomRoomTypeArray = gm.topRooms[randomRoomType];
                int          randomRoom          = Random.Range(0, randomRoomTypeArray.Length);

                _newRoom = Instantiate(randomRoomTypeArray[randomRoom], transform.position + new Vector3(0, 20, 0), Quaternion.identity, transform.parent);
                gm.spawnedRooms.Add(_newRoom);

                gm.AddNewGridGraph(transform.position + new Vector3(0, 20, 0));
            }


            //update camera
            mainCamera.transform.position += new Vector3(0, 20, 0);

            //move player to bottom door of new room (with offset)
            pB.transform.position = _newRoom.GetComponent <RoomManager>().downEntrance.transform.position + new Vector3(0, 0.5f, 0);

            //enable player script
            pB.enabled = true;
        }
        else if (door.doorLocation == DoorLocation.Right)
        {
            GameObject _newRoom = null;

            //disable player script
            pB.enabled = false;

            //check if there's not already a room on top of this one
            bool _roomAlreadyThere = false;

            for (int i = 0; i < gm.spawnedRooms.Count; i++)
            {
                if (gm.spawnedRooms[i].transform.position == transform.position + new Vector3(13, 0, 0))
                {
                    _roomAlreadyThere = true;
                    _newRoom          = gm.spawnedRooms[i];
                    _newRoom.SetActive(true);
                    RoomManager nrRM = _newRoom.GetComponent <RoomManager>();
                    nrRM.doorOn      = false;
                    nrRM.justEntered = true;
                    nrRM.StartCoroutine(nrRM.doorCooldown());
                }
            }

            //spawn room on top of this one with a bottom door
            if (!_roomAlreadyThere)
            {
                int          randomRoomType      = Random.Range(0, 8);
                GameObject[] randomRoomTypeArray = gm.rightRooms[randomRoomType];
                int          randomRoom          = Random.Range(0, randomRoomTypeArray.Length);

                _newRoom = Instantiate(randomRoomTypeArray[randomRoom], transform.position + new Vector3(13, 0, 0), Quaternion.identity, transform.parent);
                gm.spawnedRooms.Add(_newRoom);

                gm.AddNewGridGraph(transform.position + new Vector3(13, 0, 0));
            }

            //update camera
            mainCamera.transform.position += new Vector3(13, 0, 0);

            //move player to bottom door of new room (with offset)
            pB.transform.position = _newRoom.GetComponent <RoomManager>().leftEntrance.transform.position + new Vector3(0.5f, 0, 0);

            //enable player script
            pB.enabled = true;
        }
        else if (door.doorLocation == DoorLocation.Bottom)
        {
            GameObject _newRoom = null;

            //disable player script
            pB.enabled = false;

            //check if there's not already a room on top of this one
            bool _roomAlreadyThere = false;

            for (int i = 0; i < gm.spawnedRooms.Count; i++)
            {
                if (gm.spawnedRooms[i].transform.position == transform.position + new Vector3(0, -20, 0))
                {
                    _roomAlreadyThere = true;
                    _newRoom          = gm.spawnedRooms[i];
                    _newRoom.SetActive(true);
                    RoomManager nrRM = _newRoom.GetComponent <RoomManager>();
                    nrRM.doorOn      = false;
                    nrRM.justEntered = true;
                    nrRM.StartCoroutine(nrRM.doorCooldown());
                }
            }

            //spawn room on top of this one with a bottom door
            if (!_roomAlreadyThere)
            {
                int          randomRoomType      = Random.Range(0, 8);
                GameObject[] randomRoomTypeArray = gm.bottomRooms[randomRoomType];
                int          randomRoom          = Random.Range(0, randomRoomTypeArray.Length);

                _newRoom = Instantiate(randomRoomTypeArray[randomRoom], transform.position + new Vector3(0, -20, 0), Quaternion.identity, transform.parent);
                gm.spawnedRooms.Add(_newRoom);

                gm.AddNewGridGraph(transform.position + new Vector3(0, -20, 0));
            }

            //update camera
            mainCamera.transform.position += new Vector3(0, -20, 0);

            //move player to bottom door of new room (with offset)
            pB.transform.position = _newRoom.GetComponent <RoomManager>().topEntrance.transform.position + new Vector3(0, -0.5f, 0);

            //enable player script
            pB.enabled = true;
        }
        else if (door.doorLocation == DoorLocation.Left)
        {
            GameObject _newRoom = null;

            //disable player script
            pB.enabled = false;

            //check if there's not already a room on top of this one
            bool _roomAlreadyThere = false;

            for (int i = 0; i < gm.spawnedRooms.Count; i++)
            {
                if (gm.spawnedRooms[i].transform.position == transform.position + new Vector3(-13, 0, 0))
                {
                    _roomAlreadyThere = true;
                    _newRoom          = gm.spawnedRooms[i];
                    _newRoom.SetActive(true);
                    RoomManager nrRM = _newRoom.GetComponent <RoomManager>();
                    nrRM.doorOn      = false;
                    nrRM.justEntered = true;
                    nrRM.StartCoroutine(nrRM.doorCooldown());
                }
            }

            //spawn room on top of this one with a bottom door
            if (!_roomAlreadyThere)
            {
                int          randomRoomType      = Random.Range(0, 8);
                GameObject[] randomRoomTypeArray = gm.leftRooms[randomRoomType];
                int          randomRoom          = Random.Range(0, randomRoomTypeArray.Length);

                _newRoom = Instantiate(randomRoomTypeArray[randomRoom], transform.position + new Vector3(-13, 0, 0), Quaternion.identity, transform.parent);
                gm.spawnedRooms.Add(_newRoom);

                gm.AddNewGridGraph(transform.position + new Vector3(-13, 0, 0));
            }

            //update camera
            mainCamera.transform.position += new Vector3(-13, 0, 0);

            //move player to bottom door of new room (with offset)
            pB.transform.position = _newRoom.GetComponent <RoomManager>().rightEntrance.transform.position + new Vector3(-0.5f, 0, 0);

            //enable player script
            pB.enabled = true;
        }

        //gameObject.SetActive(false);
    }
Ejemplo n.º 19
0
 // Use this for initialization
 void Start()
 {
     m_DoorBehaviour = transform.parent.gameObject.GetComponent <DoorBehaviour>();
 }
Ejemplo n.º 20
0
    IEnumerator InterpolatePositionChangingChamber(float time, Vector2 finalPosition, DoorBehaviour door)
    {
        float   elapsedTime     = 0.0f;
        Vector2 initialPosition = GetComponent <Transform>().position;

        while (elapsedTime < time)
        {
            elapsedTime += Time.deltaTime;
            GetComponent <Transform>().position = Vector2.Lerp(initialPosition, finalPosition, elapsedTime / time);
            yield return(null);
        }
        GetComponent <Transform>().position = finalPosition;
        Blink(true);
        GetComponent <CapsuleCollider2D>().enabled = true;
        SetInputActivated(true);

        door.TurnOnTurnOff();
    }
Ejemplo n.º 21
0
    //Set Animation Flags
    void AnimationControl()
    {
        //TESTE------------------------------------------------------------
        if (Input.GetKeyDown(KeyCode.H))
        {
            Alarm alarm_script = GameObject.Find("Alarm").GetComponent <Alarm>();
            if (!alarm_script.alarmOn)
            {
                alarm_script.StartAlarm();
            }
            else
            {
                alarm_script.StopAlarm();
            }
        }
        //------------------------------------------------------------
        //Open Door
        if (onDoor && Input.GetKeyDown(KeyCode.F))
        {
            if (targetDoor.tag == "Door")
            {
                DoorBehaviour doorScript = targetDoor.GetComponent <DoorBehaviour>();
                doorScript.interactDoor();
                onDoor = false;
            }

            if (targetDoor.tag == "DoorTimer")
            {
                DoorBehaviour script;
                GameObject    parent;
                parent = targetDoorButton.transform.parent.gameObject;
                script = parent.transform.Find("Door").GetComponent <DoorBehaviour>();
                script.openDoor();
            }
        }
        if (onButton && Input.GetKeyDown(KeyCode.F))
        {
            DoorBehaviour script;
            GameObject    parent;
            // Debug.Log(targetDoorButton.name);
            parent = targetDoorButton.transform.parent.gameObject;
            Debug.Log(parent.name);

            script = parent.transform.Find("Door").GetComponent <DoorBehaviour>();

            script.pressButton();
        }
        //Get Watch
        if (onWatch && Input.GetKeyDown(KeyCode.F))
        {
            GameObject watch = GameObject.FindGameObjectWithTag("Watch");
            Destroy(watch);
            onWatch = false;
            GameObject cont   = GameObject.Find("GameController");
            Controller script = cont.GetComponent <Controller>();
            script.pickSatellite();
            hasSatellite = true;
        }

        //Running Jump
        //if (controller.isGrounded)
        //{
        //    if (Input.GetKey(KeyCode.W) && Input.GetKey(KeyCode.LeftShift) && Input.GetKeyDown(KeyCode.Space))
        //    {
        //        anim.SetTrigger("isRunningJump");
        //        translation.y = 1000;
        //        //Debug.Log("Jumped");
        //    }
        //}
        //else if (!controller.isGrounded)
        //{
        //    //Debug.Log("Not on Ground");
        //}

        //Crouch
        if (Input.GetKeyDown(KeyCode.LeftControl))
        {
            // controller.height = 7;
            //controller.center = crouchCapsuleCenter;
            anim.SetBool("isCrouching", true);
            anim.SetBool("isCrouch", true);
        }
        else if (Input.GetKeyUp(KeyCode.LeftControl))
        {
            controller.height = 12.5f;
            //controller.center = capsuleCenter;
            anim.SetBool("isCrouchWalking", false);
            anim.SetBool("isCrouching", false);
            anim.SetBool("isCrouch", false);
        }

        //Crouch Walking
        if (Input.GetKey(KeyCode.W) && Input.GetKey(KeyCode.LeftControl))
        {
            anim.SetBool("isCrouchWalking", true);
        }
        else if (Input.GetKey(KeyCode.W) && Input.GetKeyUp(KeyCode.LeftControl))
        {
            anim.SetBool("isCrouchWalking", false);
            anim.SetBool("isCrouching", false);
            anim.SetBool("isCrouch", false);
        }
        else if (Input.GetKeyUp(KeyCode.W) && Input.GetKey(KeyCode.LeftControl))
        {
            anim.SetBool("isCrouchWalking", false);
            anim.SetBool("isCrouching", false);
            anim.SetBool("isCrouch", true);
        }

        //Walk
        if (translation.z != 0 && Input.GetKey(KeyCode.W))
        {
            if (footsteps1_pressed)
            {
                footsteps1.Play();
                footsteps1_pressed = false;
            }

            anim.SetBool("isWalking", true);
            speed = speedWalk;
        }
        else
        {
            footsteps1.Stop();
            footsteps1_pressed = true;


            anim.SetBool("isWalking", false);
        }

        //Run
        if (translation.z != 0 && Input.GetKey(KeyCode.W) && Input.GetKey(KeyCode.LeftShift))
        {
            if (footsteps_run1_pressed)
            {
                // footsteps1.clip = footsteps_run1_clip;
                footsteps1.Pause();
                footsteps_run1.Play();
                footsteps_run1_pressed = false;
            }
            anim.SetBool("isRunning", true);
            speed = speedRun;
        }
        else
        {
            footsteps_run1.Stop();
            footsteps1.UnPause();
            footsteps_run1_pressed = true;
            anim.SetBool("isRunning", false);
        }
    }
Ejemplo n.º 22
0
 public void Init(DoorBehaviour doorBehaviour)
 {
     this.doorBehaviour = doorBehaviour;
     col = GetComponent <Collider2D>();
 }
Ejemplo n.º 23
0
 // Token: 0x060011C5 RID: 4549 RVA: 0x0000C573 File Offset: 0x0000A773
 public void SetDoorLogic(DoorBehaviour logic)
 {
     this._doorLogic = logic;
 }
Ejemplo n.º 24
0
 // Start is called before the first frame update
 void Start()
 {
     doorObj    = GameObject.Find("DoorObj");
     doorBehave = doorObj.GetComponent <DoorBehaviour>();
 }
 // Use this for initialization
 void Start()
 {
     door = GetComponentInChildren<DoorBehaviour> ();
     doorRb = GetComponentInChildren<Rigidbody2D> ();
     button = GetComponentInChildren<ButtonBehaviour> ();
 }
Ejemplo n.º 26
0
    IEnumerator Tweening(DoorBehaviour front, DoorBehaviour back)
    {
        camera.GetComponent <CameraBehaviour>().target      = back.gameObject;
        main_camera.GetComponent <CameraBehaviour>().target = front.gameObject;

        RoomScript frontRoom = front.GetComponentInParent <RoomScript>();

        player.GetComponent <PlayerMovement>().enabled     = false;
        player.GetComponent <PlayerInteractions>().enabled = false;

        float alpha  = 0.0f;
        float offset = 0.0f;

        for (float i = 0.0f; i <= 1.0f; i += 0.025f)
        {
            alpha = i;

            if (!frontDoor)
            {
                alpha = 1 - i;
            }

            offset = alpha * frontRoom.depth;

            main_camera.GetComponent <CameraBehaviour>().ZOffset = offset;
            camera.GetComponent <CameraBehaviour>().ZOffset      = offset - frontRoom.depth;

            tweenBehaviour.SetAlpha(alpha);

            yield return(null);
        }

        main_camera.GetComponent <CameraBehaviour>().target  = player;
        main_camera.GetComponent <CameraBehaviour>().ZOffset = 0.0f;

        yield return(null);

        tweenBehaviour.SetAlpha(0.0f);

        player.GetComponent <PlayerMovement>().enabled     = true;
        player.GetComponent <PlayerInteractions>().enabled = true;

        RoomScript oldRoom;
        RoomScript newRoom;

        if (frontDoor)
        {
            oldRoom = frontRoom;
            newRoom = back.GetComponentInParent <RoomScript>();
        }
        else
        {
            oldRoom = back.GetComponentInParent <RoomScript>();
            newRoom = frontRoom;
        }

        if (newRoom != GetComponentInParent <RoomScript>())
        {
            foreach (Renderer renderer in oldRoom.GetComponentsInChildren <Renderer>())
            {
                renderer.enabled = false;
            }
        }
    }