/// <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(); }
// 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); } } } } } } }