// Use this for initialization
    void Start()
    {
        //Je dit que je peut tourner la caméra
        timer = delayrotcam;

        //Je récupère le perso et le god
        Perso = GameObject.FindGameObjectWithTag("Player");
        God   = GameObject.FindGameObjectWithTag("God");

        //Récupérer le milieu et la taille depuis Cube_Creation
        largeur  = Mathf.RoundToInt(Perso.GetComponent <Cube_Rotations> ().GetCubeSize().x);
        hauteur  = Mathf.RoundToInt(Perso.GetComponent <Cube_Rotations> ().GetCubeSize().y);
        longueur = Mathf.RoundToInt(Perso.GetComponent <Cube_Rotations> ().GetCubeSize().z);

        //Creation du point central pour la caméra
        float milx = (float)(((float)largeur / 2) - 0.5F);
        float mily = (float)(((float)hauteur / 2) - 0.5F);
        float milz = (float)(((float)longueur / 2) - 0.5F);

        target = new Vector3(milx, mily, milz);

        //je définis la position de la caméra pour avoir le bon angle (qui fait des jeux de perspectives)
        poscam [0] = new Vector3(milx - 4F, mily + 4F, milz - 4F);
        poscam [1] = new Vector3(milx - 4F, mily + 4F, milz + 4F);
        poscam [2] = new Vector3(milx + 4F, mily + 4F, milz + 4F);
        poscam [3] = new Vector3(milx + 4F, mily + 4F, milz - 4F);

        //j'initialise la caméra
        cameraposprec      = poscam [GetCamNumber()];
        transform.position = poscam [GetCamNumber()];
        transform.LookAt(target);
    }
    void GetInputRotation()
    {
        if (CanRotate)         //Si je permet à ma caméra de tourner
        {
            //jJe détermine à quel point est la caméra selon la rotation
            if ((timer >= delayrotcam) && (Input.GetButtonDown("CameraH")) && !Perso.GetComponent <Cube_Rotations> ().RotationReady() && (!Rot360))
            {
                timer     = 0;
                rotationH = true;

                if (Can360)                 //Si la caméra est faite pour faire des tours à 360 je fais des tours à 360
                {
                    Rot360 = true;
                }
                else
                {
                    ChangeCameraPos(1);
                }
            }

            if ((timer >= delayrotcam) && (Input.GetButtonDown("CameraAH")) && !Perso.GetComponent <Cube_Rotations> ().RotationReady() && (!Rot360))
            {
                timer      = 0;
                rotationAH = true;

                if (Can360)                 //Si la caméra est faite pour faire des tours à 360 je fais des tours à 360
                {
                    Rot360 = true;
                }
                else
                {
                    ChangeCameraPos(-1);
                }
            }
        }
        else if (Input.GetButtonDown("CameraH") || Input.GetButtonDown("CameraAH"))           //Si j'interdis la rotation de la caméra mais que le joueur essaye de la tourner
        {
            GameObject.Find("No_Camera").GetComponent <CanvasRenderer> ().SetAlpha(1f);       //J'affiche rapidement l'icône d'interdiction de rotation de la caméra
        }
    }
    // Update is called once per frame
    void Update()
    {
        //J'incrémente le timer
        MyTimer();

        if (Perso.GetComponent <Can_Act> ().canact)        //J'attends que l'UI de fade soit passé pour permettre au joueur de faire des trucs
        {
            //Je récupère les inputs du joueur
            ChangeVue();
            GetInputRotation();
        }

        //J'adapte la caméra à la situation actuelle
        OrthoSize();
        CameraLookAt();
        Turn360();
        if (!Rot360)
        {
            CameraPos();
        }

        //Je sauvegarde l'ancienne position de la caméra
        SaveCameraPosPrec();
    }
    // Update is called once per frame
    void Update()
    {
        //je récupère la position du perso
        persox = Perso.position.x;
        persoy = Perso.position.y;
        persoz = Perso.position.z;

        //je récupère l'état du perso
        saut = Perso.GetComponent <Controle_Personnage> ().ensaut;

        //je regarde si le joueur bouge après le plan compensé
        if ((Input.anyKeyDown) & (fineffetdramatique))
        {
            abouge = true;
        }

        //caractéristiques caméra fonction marche sur laquelle est le personnage avant l'effet dramamtique
        if ((persox <= 5.9F) & (!effetdramatique) & (!fineffetdramatique))
        {
            Quaternion targetRotation = Quaternion.LookRotation(Planete.transform.position - transform.position);

            // Smoothly rotate towards the target point.
            transform.rotation = Quaternion.Slerp(transform.rotation, targetRotation, smoothTimeregard * Time.deltaTime);
            transform.position = new Vector3(persox - 2F - (2.7F * 0.1666666F * (persoy + 0.1F)), persoy + 0.9F + (0.1F * (persoy + 0.1F)), persoz);
        }

        //caractéristiques caméra fonction marche sur laquelle est le personnage après l'effet dramamtique
        if ((persox > 6.9F) & (!effetdramatique) & (fineffetdramatique) & (abouge))
        {
            Quaternion targetRotation = Quaternion.LookRotation(Perso.transform.position - transform.position);

            // Smoothly rotate towards the target point.
            transform.rotation = Quaternion.Slerp(transform.rotation, targetRotation, smoothTimeregard * Time.deltaTime);

            positionposteffet  = new Vector3(persox - 21.1F + (2.8225F * (persox - 5.9F)), persoy + 12.25F + (-0.2666666F * (persoy - 5.9F)), persoz);
            transform.position = Vector3.Lerp(transform.position, positionposteffet, smoothTimeregard * Time.deltaTime);
        }

        //caractéristiques caméra fonction marche sur laquelle est le personnage après l'effet dramamtique
        if ((persox >= 5.9) & (persox < 6.9F) & (!effetdramatique) & (fineffetdramatique) & (abouge))
        {
            Quaternion targetRotation = Quaternion.LookRotation(Planete.transform.position - transform.position);

            // Smoothly rotate towards the target point.
            transform.rotation = Quaternion.Slerp(transform.rotation, targetRotation, smoothTimeregard * Time.deltaTime);

            positionposteffet  = new Vector3(persox - 21.1F + (2.8225F * (persox - 5.9F)), persoy + 0.9F + (0.1F * (persoy + 0.1F)), persoz);
            transform.position = Vector3.Lerp(transform.position, positionposteffet, smoothTimeregard * Time.deltaTime);
        }

        //caractéristiques caméra fonction marche sur laquelle est le personnage avant l'effet dramamtique
        if ((persox < 5.9F) & (!effetdramatique) & (fineffetdramatique) & (abouge))
        {
            Quaternion targetRotation = Quaternion.LookRotation(Perso.transform.position - transform.position);

            // Smoothly rotate towards the target point.
            transform.rotation = Quaternion.Slerp(transform.rotation, targetRotation, smoothTimeregard * Time.deltaTime);
            positionposteffet  = new Vector3(persox - 2F - (4.7F * (persoy + 0.1F)), persoy + 0.9F + (2F * (persoy + 0.1F)), persoz);
            transform.position = Vector3.Lerp(transform.position, positionposteffet, smoothTimeregard * Time.deltaTime);
        }

        //je fais le plan compensé au sommet de l'escalier
        if ((Mathf.RoundToInt(persoy) == 6) & (!saut) & (!fineffetdramatique))
        {
            effetdramatique         = true;
            Camera.main.fieldOfView = Camera.main.fieldOfView - smoothTimeeffet * Time.deltaTime;
            camerapanx         = (35.35F * ((Camera.main.fieldOfView - 12.06F) / (Camera.main.fieldOfView + 1.072F))) - 28.52F;
            camerapany         = (-0.0133F * Camera.main.fieldOfView) + 8.4145F;
            transform.position = new Vector3(camerapanx, camerapany, transform.position.z);
        }

        if (Camera.main.fieldOfView - 20F <= 0)
        {
            Camera.main.fieldOfView = 20F;
            fineffetdramatique      = true;
            effetdramatique         = false;
        }
    }