Page 1 sur 1

[DB-AL] ennemi dans mario

Publié : 28 Jan 2019 18:58
par yannou42800
Bonjour,
je débute sur unity et j'essais de créer un jeu 2D et la je suis bloqué car je doit créer un script pour que lorsque je saute sur l'ennemi il meurt pouvez-vous m'aider? Merci d'avance

Re: [DB-AL] ennemi dans mario

Publié : 29 Jan 2019 10:44
par Sebela
Bonjour Yannou,

Je te conseille de regarder du côté des Triggers. En gros tu peux positionner un BoxCollider qui couvre seulement la tête de ton ennemi et que tu set en mode trigger, puis tu peux utiliser la fonction :

Code : Tout sélectionner

void OnTriggerEnter(Collider other){ 
	if (other.gameObject.tag == "perso")
		Die();
}
Bon courage !

Re: [DB-AL] ennemi dans mario

Publié : 29 Jan 2019 11:32
par EmileF
Bonjour,

Petit détail supplémentaire, puisque tu es en 2D, le BoxCollider sera surement un BoxCollider2D
et dans le code ce sera OnTriggerEnter2D.

Dans ton perso "perso" est le tag que tu dois lui affecter.

Die() est le code qui provoque les dommages à ton ennemi.

Salut

Re: [DB-AL] ennemi dans mario

Publié : 07 Fév 2019 17:27
par WilfreGD
Tu peux aussi utiliser "OnCollisionEnter" pour détecter la collision sur l'ennemi de la même façon, mais tu pourras ainsi éviter d'utiliser BoxCollider comme un trigger et du coup ne pas perdre la collision solide avec l'ennemi.

Code : Tout sélectionner

void OnColliderEnter(Collision other){ 
	if (other.gameObject.tag == "perso")
	{
		if(other.transform.position.y > transform.position.y)
			Die();
		else
			//Tue le joueur
	}
}
Ici tu peux garder le même exemple mais cette fois ci en vérifiant que le joueur soit bien au dessus de l'ennemi.
Donc, si il y a collision entre le joueur et l'ennemi mais que le joueur est au dessus, l'ennemi meurt. Sinon, c'est le joueur qui meurt.

Re: [DB-AL] ennemi dans mario

Publié : 07 Fév 2019 18:05
par boubouk50
Il y a plusieurs façon de procéder, selon l'angle de vue (code / détection / collision / repère)
par exemple, tu pourrais encapsuler l'ennemi par 4 triggers: droite/gauche/dessus/dessous. Certains déclenchent la mort de l'ennemi, d'autres celle du joueur.
Tu pourrais aussi encapsuler le joueur par 4 triggers: droite/gauche/dessus/dessous. Certains déclenchent la mort du joueur, d'autres celle de l'ennemi. (je choisirais cette option)

La seconde à l'avantage de ne gérer que les colliders du joueur alors que l'ennemi n'en a qu'un. Cela rend plus simple la configuration. Qui plus est, si un ennemi se fait toucher par une boule de feu par exemple, on se fiche de savoir quel collider est touché. C'est au personnage ou à la-dite boule de feu de le savoir.
C'est un simple changement de repère. Au lieu de direle joueur a touché la tête de l'ennemi tu dirais les pieds du joueur ont touché l'ennemi. Tout de suite, ça simplifie le rapport. Seul le joueur est configuré spécialement au lieu de tous les ennemis. Et ça évite des tests en code:
Si les pieds touchent l'ennemi alors l'ennemi meurt sinon joueur meurt/rapetisse.
Si la boule de feu touche l'ennemi alors il meurt.

Re: [DB-AL] ennemi dans mario

Publié : 07 Fév 2019 20:39
par WilfreGD
boubouk50 a écrit :
07 Fév 2019 18:05
C'est un simple changement de repère.
Et de performances, entre un joueur qui vérifie si un ennemi est présent et 200 ennemis qui vérifient si un joueur est présent, le choix est vite fait. Ça change beaucoup de choses au jeu et a la fin le code est plus petit et plus simple a gérer. Les ennemis ne peuvent que se déplacer et mourir sans plus de complexité, le joueur peut s'occuper du reste. On réduit les références et les Update.