%% nav-debut : généré par gen_navigation.py, ne pas modifier à la main %%
> [!nav]
> ↩ [[Code et Développement/Développement d'Applications/Développement de jeux 3D/Développement de jeux 3D|Accueil · Développement de jeux 3D]]
>
> | [[Code et Développement/Développement d'Applications/Développement de jeux 3D/13. Coder la disparition des cœurs\|← . Coder la disparition des cœurs]] | [[Code et Développement/Développement d'Applications/Développement de jeux 3D/15. Retour à la case départ\|. Retour à la case départ →]] |
> |:---|---:|
%% nav-fin %%
[[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**
![[Code et Développement/Développement d'Applications/Développement de jeux 3D/ressources/animatorPlayer.gif]]
Si on lance le jeu on voit bien que le l'animation de mort se joue :
![[Code et Développement/Développement d'Applications/Développement de jeux 3D/ressources/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.
[[Code et Développement/Développement d'Applications/Développement de jeux 3D/15. Retour à la case départ|. Retour à la case départ]]
---
%% nav-debut : généré par gen_navigation.py, ne pas modifier à la main %%
> [!nav]
> ↩ [[Code et Développement/Développement d'Applications/Développement de jeux 3D/Développement de jeux 3D|Accueil · Développement de jeux 3D]]
>
> | [[Code et Développement/Développement d'Applications/Développement de jeux 3D/13. Coder la disparition des cœurs\|← . Coder la disparition des cœurs]] | [[Code et Développement/Développement d'Applications/Développement de jeux 3D/15. Retour à la case départ\|. Retour à la case départ →]] |
> |:---|---:|
%% nav-fin %%