Exemple #1
0
    /// <summary>
    /// Endommage le personnage et s'occupe de tuer le personnage
    /// </summary>
    /// <param name="damage"></param>
    public void damage(int damage)
    {
        vie -= damage;
        GameManager.singleton.nbDegatTotal += damage;

        audioSource.PlayOneShot(audioDamage);

        //S'il est mort
        if (vie <= 0)
        {
            vie = 0;
            GameManager.singleton.timerJoueur = 0.1f;

            //Afin d'éviter des bugs
            StopAllCoroutines();

            joueurAttaques.resetAttackSelected();

            //Audio désactiver l'audio source
            audioSource.Stop();

            //Désactive tout
            animationJoueur.enabled = false;

            //L'enlève de la liste
            GameManager.singleton.killJoueur(transform);

            //Active le ragdoll
            foreach (Collider rbcollider in ragdollColliders)
            {
                rbcollider.enabled = true;
            }

            foreach (Rigidbody rb in ragdollRBs)
            {
                rb.isKinematic = false;
            }

            joueurCollider.enabled      = false;
            playerRigidbody.isKinematic = true;
            //Continue à désactiver
            isDead = true;
        }

        //Update l'UI
        UI_Manager.singleton.changeVieText();
    }
Exemple #2
0
    // Update is called once per frame
    void Update()
    {
        //Vérifie pour éviter les bugs
        if (joueurMain.isDead == false && GameManager.singleton.isPaused == false)
        {
            if (joueurMain.isThisPlayersTurn && joueurMain.isAttacking == false)
            {
                //Crée une liste pour le ciblage de l'attaque 4
                List <GameObject> liste = new List <GameObject>
                {
                    cercleHeal,
                    cercleLent,
                    cerclePoison
                };
                //Call "L'update" de "JoueurAttaque"
                joueurAttaques.AttaqueUpdate(listeTypesAttaque, liste);

                //--------------------------------
                //Section des attaques. Le getTimerJoueur() est pour s'assurer que le joueur ait assez de temps pour payer l'attaque
                //---------------------------------

                if (joueurMain.moveSelected != 0)
                {
                    if (Input.GetMouseButtonDown(0))
                    {
                        if (joueurMain.moveSelected == 1 && GameManager.singleton.getTimerJoueur() > 3 * joueurMain.puissanceSlow)
                        {
                            RaycastHit hit;
                            if (Physics.Raycast(joueurMain.camRay, out hit, 100, joueurMain.teleportLayer))
                            {
                                joueurAttaques.resetAttackSelected();
                                joueurMain.isAttacking = true;
                                joueurMain.animationJoueur.SetTrigger("areaAttack");
                                StartCoroutine(CurseSlow(hit));
                            }
                        }
                        else if (joueurMain.moveSelected == 2 && GameManager.singleton.getTimerJoueur() > 3 * joueurMain.puissanceSlow)
                        {
                            RaycastHit hit;

                            if (Physics.Raycast(joueurMain.camRay, out hit, 100, joueurMain.teleportLayer))
                            {
                                joueurAttaques.resetAttackSelected();
                                joueurMain.isAttacking = true;
                                joueurMain.animationJoueur.SetTrigger("areaAttack");
                                StartCoroutine(CursePoison(hit));
                            }
                        }
                        else if (joueurMain.moveSelected == 3 && GameManager.singleton.getTimerJoueur() > 2 * joueurMain.puissanceSlow)
                        {
                            RaycastHit hit;
                            if (Physics.Raycast(joueurMain.camRay, out hit, 100, joueurMain.teleportLayer))
                            {
                                joueurAttaques.resetAttackSelected();
                                joueurMain.isAttacking = true;
                                joueurMain.animationJoueur.SetTrigger("areaAttack");
                                StartCoroutine(HealCircle(hit));
                            }
                        }
                        else if (joueurMain.moveSelected == 4 && GameManager.singleton.getTimerJoueur() > 6 * joueurMain.puissanceSlow)
                        {
                            joueurAttaques.resetAttackSelected();
                            joueurMain.isAttacking = true;
                            joueurMain.animationJoueur.SetTrigger("areaAttack");
                            StartCoroutine(ExplosionCircle());
                        }
                    }
                }
            }
        }
    }
    // Update is called once per frame
    void Update()
    {
        //Vérifie pour éviter les bugs
        if (joueurMain.isDead == false && GameManager.singleton.isPaused == false)
        {
            if (joueurMain.isThisPlayersTurn && joueurMain.isAttacking == false)
            {
                //Call "L'update" de "JoueurAttaque"
                joueurAttaques.AttaqueUpdate(listeTypesAttaque, null);

                //--------------------------------
                //Section des attaques. Le getTimerJoueur() est pour s'assurer que le joueur ait assez de temps pour payer l'attaque
                //---------------------------------

                if (joueurMain.moveSelected != 0)
                {
                    if (Input.GetMouseButtonDown(0))
                    {
                        if (joueurMain.moveSelected == 1 && GameManager.singleton.getTimerJoueur() > 2 * joueurMain.puissanceSlow)
                        {
                            joueurAttaques.resetAttackSelected();
                            joueurMain.isAttacking = true;
                            joueurMain.animationJoueur.SetTrigger("FireballAttack");
                            StartCoroutine(BouleDeFeu());
                        }
                        else if (joueurMain.moveSelected == 2 && GameManager.singleton.getTimerJoueur() > 4 * joueurMain.puissanceSlow)
                        {
                            joueurAttaques.resetAttackSelected();
                            joueurMain.isAttacking = true;
                            joueurMain.animationJoueur.SetTrigger("GroundAttack");
                            StartCoroutine(ConeDeFeu());
                        }
                        else if (joueurMain.moveSelected == 3 && GameManager.singleton.getTimerJoueur() > 3 * joueurMain.puissanceSlow)
                        {
                            RaycastHit hit;
                            if (Physics.Raycast(joueurMain.camRay, out hit, 500, joueurMain.teleportLayer))
                            {
                                joueurAttaques.resetAttackSelected();
                                joueurMain.isAttacking = true;
                                joueurMain.animationJoueur.SetTrigger("GroundAttack");
                                StartCoroutine(MurDeFeu(hit));
                            }
                        }
                        else if (joueurMain.moveSelected == 4 && GameManager.singleton.getTimerJoueur() > 0.2 * joueurMain.puissanceSlow)
                        {
                            RaycastHit hit;
                            if (Physics.Raycast(joueurMain.camRay, out hit, 500, joueurMain.teleportLayer))
                            {
                                joueurAttaques.resetAttackSelected();
                                int puissance = Mathf.RoundToInt(GameManager.singleton.getTimerJoueur() * 3);
                                GameManager.singleton.StartAttack(GameManager.singleton.getTimerJoueur() - 0.2f);
                                transform.position = hit.point;

                                GameObject explosion = Instantiate(explosionPrefab, transform.position, transform.rotation);
                                explosion.GetComponent <Attaque>().damage = puissance;
                                joueurMain.Enflammer(1);
                                GameManager.singleton.FinishAttack();

                                joueurMain.audioSource.PlayOneShot(audioZoom);
                            }
                        }
                    }
                }
            }
        }
    }