private void OnTriggerExit(Collider other)
    {
        CameraBlock camBlock = other.GetComponent <CameraBlock>();

        if (camBlock != null)
        {
            if (currentCameraBlock == camBlock)
            {
                currentCameraBlock = null;
            }
            return;
        }

        if (other.GetComponent <SpatialSas>() != null)
        {
            currentSpatialSas = null;
            float zOffset = Mathf.Infinity;
            foreach (SpatialLine sl in currentSpatialRoom._spatialLines)
            {
                if (sl.begin.position.x <= transform.position.x && sl.end.position.x >= transform.position.x)
                {
                    float offset = Mathf.Abs(sl.begin.position.z - transform.position.z);
                    if (offset < zOffset)
                    {
                        zOffset               = offset;
                        currentSpatialLine    = sl;
                        isChangingSpatialLine = true;
                        changingLineDirection = (sl.begin.position.z - transform.position.z) > 0 ? 1 : -1;
                    }
                }
            }

            return;
        }

        if (other.CompareTag("Hideout"))
        {
            isHidden = false;
        }
        else if (other.CompareTag("Metal_Casier"))
        {
            overrideSurface = false;
        }
        else if (other.CompareTag("NeedsCentering"))
        {
            needsCentering = false;
        }
        else if (other.CompareTag("Elevator"))
        {
            Elevator elevator = other.GetComponent <Elevator>();
            if (elevator != null)
            {
                isInElevator             = false;
                elevator.isPlayerOnBoard = false;
            }
        }

        else if (other.CompareTag("DetectZone"))
        {
            Enemy e = other.GetComponentInParent <Enemy>();
            e.DetectPlayer(false);
        }
    }
    private void OnTriggerEnter(Collider other)
    {
        CameraBlock cameraBlock = other.GetComponent <CameraBlock>();

        if (cameraBlock != null)
        {
            if (cameraBlock == currentCameraBlock)
            {
                return;
            }
            if (currentCameraBlock != null)
            {
                StartCoroutine(CameraBlockChangesCoroutine());
            }
            currentCameraBlock = cameraBlock;
            CameraBlockChanges();
            return;
        }

        SpatialSas spatialSas = other.GetComponent <SpatialSas>();

        if (spatialSas != null)
        {
            currentSpatialSas     = spatialSas;
            currentSpatialLine    = spatialSas.spatialLine;
            isChangingSpatialLine = true;
            changingLineDirection = 1;
            return;
        }

        SpatialRoom spatialRoom = other.GetComponent <SpatialRoom>();

        if (spatialRoom != null)
        {
            currentSpatialRoom = spatialRoom;
            if (currentSpatialSas == null)
            {
                chooseNearestSpatialLine();
            }
            return;
        }
        else if (other.CompareTag("TriggerBipede"))
        {
            if (!triggerBipede)
            {
                triggerBipede = true;
                AkSoundEngine.PostEvent(GameManager.instance.triggerBipede1Sound, GameManager.instance.gameObject);
            }
        }
        else if (other.CompareTag("TriggerPorte"))
        {
            other.GetComponent <TriggerPorte>().SetSpeed();
        }
        else if (other.CompareTag("Metal_Casier"))
        {
            overrideSurface = true;
        }
        else if (other.CompareTag("Hideout"))
        {
            isHidden = true;
        }
        else if (other.CompareTag("DetectZone"))
        {
            Enemy e = other.GetComponentInParent <Enemy>();
            //e.DetectPlayer(true);
            //print("COLLISION ARAIGNEE");
        }
        else if (other.CompareTag("Finish"))
        {
            AkSoundEngine.PostEvent("Stop_Random_Track1", GameManager.instance.gameObject);
            GameManager.instance.camHandler.DestroyTarget();
            UIManager.instance.FadeInEnd();
        }
        else if (other.CompareTag("Elevator"))
        {
            Elevator elevator = other.GetComponent <Elevator>();
            if (elevator != null)
            {
                elevator.isPlayerOnBoard = true;
                elevator.StartMoving();
                animator.SetBool("IsMoving", false);
                isInElevator = true;
                //print("elevator starts moving");
            }
        }
        else if (other.CompareTag("NeedsCentering"))
        {
            needsCentering = true;
        }
    }