Probleme : enemy Health

Pour les scripts écrits en Javascript (UnityScript). :!: Obsolète :!:
Règles du forum
Merci de respecter la NOMENCLATURE suivante pour vos TITRES de messages :

Commencez par le niveau de vos scripts
DB = Débutant
MY = Moyen
CF = Confirmé

Puis le domaine d'application
-RS = Réseau
-AL = Algorithmie

Exemple :

[DB-RS] Mouvement perso multijoueur
Kamiloo95
Messages : 72
Inscription : 06 Avr 2015 10:14

Probleme : enemy Health

Message par Kamiloo95 » 08 Avr 2015 19:57

Bonjour,
Voici mon problème, je suit actuellement le tutoriel vidéo 1 sur ce site même, et je souhaite donner de la vie a mon ennemi et quand sa vie est <= 0, je souhaite que ce joueur ........ disparaisse peut être non ?
Donc j'ai utilisé ce code :

Code : Tout sélectionner

function makeDamage(damage:float){//................fonction gestion dommages de l'ennemi
	hitPoints-=damage;//.......................................on déduits des points de vie la valeur damage
	
	if (hitPoints<=0){//..........................................Si les points de vie sont inférieurs ou égauls à 0
		
		//Instantiate(explosion,transform.position,transform.rotation);//......on instantie l'explosion
		//Camera.main.SendMessageUpwards("ApplyPoints",points,SendMessageOptions.DontRequireReceiver);//:::::::::::::lancement de la fonction ApplyPoints(points) placé sur la caméra
		
		Destroy (gameObject);//.................................................................on détruit l'objet ennemi
	}
}
Mais je ne pense pas que le problème soit ici , en vérité , je pense que quand je tire sur le joueur IL NE PERD PAS DE VIE :o
( Cet ennemi serait-il un hacker qui utilise le God Mod ? )
Bref, je n'arrive pas a tuer cet ennemi ... Il y a problème ..... Effectivement.

Alors attention , là , va falloir comprendre un petit chouïa :
Quand je tire avec mon UMP-45 ( Hors Sujet ) j’interagis avec la fonction FireOneShot () qui se trouve dans mon script nommé Shoot.cs , et dans mon autre script nommé ennemy.cs, il se trouve ce code :

Code : Tout sélectionner

#pragma strict
var hitPoints = 20;

function makeDamage(damage:float){//................fonction gestion dommages de l'ennemi
	hitPoints-=damage;//.......................................on déduits des points de vie la valeur damage
	
	if (hitPoints<=0){//..........................................Si les points de vie sont inférieurs ou égauls à 0
		
		//Instantiate(explosion,transform.position,transform.rotation);//......on instantie l'explosion
		//Camera.main.SendMessageUpwards("ApplyPoints",points,SendMessageOptions.DontRequireReceiver);//:::::::::::::lancement de la fonction ApplyPoints(points) placé sur la caméra
		
		Destroy (gameObject);//.................................................................on détruit l'objet ennemi
	}
}
Et, dans mon FireOneShot (), je vais interagir ces deux fonctions entre elles grace à :

Code : Tout sélectionner

hit.collider.SendMessageUpwards("MakeDamage",damageHit,SendMessageOptions.DontRequireReceiver);
( J'ai moi même peut être pas compris .... )

Voila !
Résultat, je n'arrive pas a tuer cet ennemi .
Merci beaucoup de votre aide !

mike_muse
Messages : 46
Inscription : 29 Mars 2015 17:07

Re: Probleme : enemy Health

Message par mike_muse » 09 Avr 2015 01:57

Essai de voir si déjà tu enlèves de la vie à ton ennemie. Si oui alors vérifie ton code qui détruit l'ennemi et si non alors dans ce cas c'est ton code sur les dommages causés qui pose problème. Un ou plusieurs debug devrait suffire à savoir d'où vient le souci

Kamiloo95
Messages : 72
Inscription : 06 Avr 2015 10:14

Re: Probleme : enemy Health

Message par Kamiloo95 » 09 Avr 2015 18:39

Ok donc j'ai vérifié les deux options et en fait, je ne fait aucun degat . Comment utiliser le debugger ?

mike_muse
Messages : 46
Inscription : 29 Mars 2015 17:07

Re: Probleme : enemy Health

Message par mike_muse » 09 Avr 2015 18:42

Le debug te donne juste si tu fais des dégâts ou non... et donc vu que tu n'en fais aucun, c'est dans ton code de dommage qu'il faut regarder.

Dans la fonction que tu mets, a aucun moment on peut savoir si ta fonction makeDamage est appelé quand tu touche ton ennemi. Et en plus tu fais passer les dommages en paramètre. Je pense que aucun parametre pourrait etre mieu.

En gros tu devrais un truc qui ressemble plutôt à ça:

Si (je touche mon ennemi)
{
makeDamage();
}

et ton makeDamage doit juste contenir une variable damage qui serait de type int ou float comme tu veux et qui serait constante.
En mettant un collider légèrement decalé par rapport à ton ennemi (comme ça tu aura pas l'impression de taper à l'interieur de lui), je pense que ça devrait suffire.
Dernière édition par mike_muse le 09 Avr 2015 18:49, édité 1 fois.

Kamiloo95
Messages : 72
Inscription : 06 Avr 2015 10:14

Re: Probleme : enemy Health

Message par Kamiloo95 » 09 Avr 2015 18:48

voici mon shoot.cs :

Code : Tout sélectionner

#pragma strict
@script RequireComponent(AudioSource)

var fireRate = 0.30;
var impact:GameObject;
var canFire = true;
var damageHit : float = 25;

var shootSound:AudioClip;
Cursor.visible = false;

function Update () 
{
	if(Input.GetButton("Fire1"))
	{
		Fire();
	}
	
}

function Fire ()
{
	if (canFire == true)
	{
		canFire = false;
		
		FireOneShot();
	}
}

function FireOneShot ()
{
	
	
	var direction = transform.TransformDirection(Vector3.forward);
	var hit:RaycastHit;
	
	if (Physics.Raycast(transform.position,direction,hit,100))
	{
		var tempRot;
		tempRot = Quaternion.FromToRotation(Vector3.up,hit.normal);
		Instantiate(impact,hit.point,tempRot);
		
		hit.collider.SendMessageUpwards("MakeDamage",damageHit,SendMessageOptions.DontRequireReceiver);
	}
	
	yield WaitForSeconds(fireRate);
	canFire = true;
	
	GetComponent.<AudioSource>().PlayOneShot(shootSound);
}
Et là mon enemy.cs :

Code : Tout sélectionner

#pragma strict
var hitPoints = 20;

function makeDamage(damage:float){//................fonction gestion dommages de l'ennemi
	hitPoints-=damage;//.......................................on déduits des points de vie la valeur damage
	
	if (hitPoints<=0){//..........................................Si les points de vie sont inférieurs ou égauls à 0
		
		//Instantiate(explosion,transform.position,transform.rotation);//......on instantie l'explosion
		//Camera.main.SendMessageUpwards("ApplyPoints",points,SendMessageOptions.DontRequireReceiver);//:::::::::::::lancement de la fonction ApplyPoints(points) placé sur la caméra
		
		Destroy (gameObject);//.................................................................on détruit l'objet ennemi
	}
}

mike_muse
Messages : 46
Inscription : 29 Mars 2015 17:07

Re: Probleme : enemy Health

Message par mike_muse » 09 Avr 2015 18:54

Je pense que j'ai trouvé ton erreure. Dans ton hit.collider.SendMessage tu met "MakeDamage" or ta fonction s'appelle "makeDamage"

Kamiloo95
Messages : 72
Inscription : 06 Avr 2015 10:14

Re: Probleme : enemy Health

Message par Kamiloo95 » 09 Avr 2015 19:05

Oh :shock: mais quelle erreur bête ! Et moi qui veut devenir le meilleur développeur de Ubisoft je suis pas sorti de l’auberge !
En tout cas merci beaucoup a toi ! Cela fait beaucoup de temps que je cherche :) Merci !

mike_muse
Messages : 46
Inscription : 29 Mars 2015 17:07

Re: Probleme : enemy Health

Message par mike_muse » 09 Avr 2015 19:05

De rien. On fait souvent des erreurs comme celle là.

Verrouillé

Revenir vers « (Js) Javascript »