[[Développement Unity]] # Tuer le joueur Lorsque le joueur n'a plus de PV, on souhaite qu'il meurt. Tout d'abord, nous allons aller voir la fenêtre **Animator** dans Unity en ayant l'**enfant du** **Player** (qui s'appelle aussi Player) de sélectionné : ![[Code et Développement/Développement d'Applications/Développement Unity/ressources/image (7).png]] Cette fenêtre nous montre toutes les animations que possède notre Player et les transitions entre elles. Celles qui nous intéressent sont **Death_B** et **Death_B_Pose**. Si on clique sur la transition (la flèche) entre **Idle 0** et **Death_B** on voit qu'il y a une condition type booléenne  pour y accéder : ![[Code et Développement/Développement d'Applications/Développement Unity/ressources/image (1) (2).png]] Il va falloir appeler cette condition pour la passer à **true** lorsque le player a 0 PV. Pour ça, il faut retourner sur le script qui gère les PV, le script **Health** et déclarer l'animator de façon publique pour pour pouvoir y avoir accès depuis l'inspector et l'assigner : ```csharp public Animator playerAnim; ``` Maintenant il faut vérifier si le joueur à tous ses PV à chaque frame, pour ça dans la fonction **Update**, on va créer une condition si les pv sont inférieurs ou égales à 0 alors... : ```csharp void Update() { if(healthPoint <= 0) { playerAnim.SetBool("Death", true); } } ``` **Ctrl + S** Cliquez sur le rond à droite de la case où il y a marqué **None (Animator)** et sélectionnez **Player** ![[animatorPlayer.gif]] Si on lance le jeu on voit bien que le l'animation de mort se joue : ![[deathAnim.gif]] En revanche, elle se joue lorsque le joueur arrête de se déplacer, la transition de marche étant toujours à true. Pour corriger ça, on va passer le booléen **Walk** à false lorsque le joueur n'a plus de PV : ```csharp playerAnim.SetBool("Walk", false); ``` Vous aviez du aussi remarqué que le joueur peut aussi toujours se déplacer même lorsqu'il est mort et on ne veut pas que ça soit une feature de notre jeu. On va donc désactiver le script qui gère les déplacement du player, **PlayerInput** toujours dans notre condition. Commencez par déclarer le script **PlayerInput** : ```csharp PlayerInput playerinput; ``` Dans la fonction Start, assigner le script à **playerInput** en récupérant le component attaché au **même** gameObject : ```csharp private void Start() { playerinput = GetComponent<PlayerInput>(); } ``` Et dans la condition désactivez le script : ```csharp playerinput.enabled = false; ``` **Ctrl + S** Testez, ça marche. Maintenant il va falloir redémarrer le niveau. [[15. Retour à la case départ]] ---