Bonjour, j'aurais besoin d'aide au niveau de mon script de vie de mes ennemies.
J'ai crée un script ennemi que je vais placer sur mes ennemies dans mon jeu.
J'ai aussi disposer un texte sur le prefab ennemy afin de savoir combien de vie il lui reste et que si sa vie descende en dessous de zéro il meurt...
Mon problème vient du fait que si j'ai plusieurs ennemy en jeu et qui ont donc le même script , si j'en blesse un les deux perdes de la vie et meurt à la fin alors que j'en ai touché q'un !!
Ma question est de savoir s'il existe une solution à ce problème afin que chaque texte et donc vies des différents ennemies soit indépendants , merci d'avance pour les réponses.
[RESOLU][DB-AL] Détruires des ennemies
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
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
[RESOLU][DB-AL] Détruires des ennemies
Dernière édition par izanot le 30 Mars 2017 14:02, édité 5 fois.
Re: [DB-AL] Détruires des ennemies
La parfaite compilation des choses à ne pas faire :izanot a écrit :Bonjour, j'aurais besoin d'aide au niveau de mon script de vie de mes ennemies.
J'ai crée un script ennemi que je vais placer sur mes ennemies dans mon jeu.
Script :
Code : Tout sélectionner
[color=#FF0000] public Vector3 pipeVelocity = new Vector3(); public Vector3 pipeVelocitysaut = new Vector3(); public int delay1; public static int trollmort; public TextMesh textemorttroll; public TextMesh textevietroll; public static int vietrolls; void Start() { vietrolls = 100; Destroy(gameObject, delay1); GetComponent<Rigidbody>().velocity = pipeVelocity; trollmort = PlayerPrefs.GetInt("trollmort"); ; } void OnTriggerEnter(Collider coll) { if (coll.gameObject.tag == "Balle") { Main.score += 1; Main.Coins += 3; trollmort += 1; PlayerPrefs.SetInt("trollmort", trollmort); vietrolls -= 25; } if (coll.gameObject.tag == "ROCKBOBS") { GetComponent<Rigidbody>().velocity = pipeVelocitysaut; Main.Coins += 1; trollmort += 1; PlayerPrefs.SetInt("trollmort", trollmort); } if (coll.gameObject.tag == "Arrow") { GetComponent<Rigidbody>().velocity = pipeVelocitysaut; Main.Coins += 2; trollmort += 1; PlayerPrefs.SetInt("trollmort", trollmort); } if (coll.gameObject.tag == "perte") { if (Vague2.WAVE <= 10) { Destroy(gameObject); Main.HP -= 100; } if (Vague2.WAVE > 10 && Vague2.WAVE <= 15) { Destroy(gameObject); Main.HP -= 120; } if (Vague2.WAVE > 15 && Vague2.WAVE <= 20) { Destroy(gameObject); Main.HP -= 150; } if (Vague2.WAVE > 20 && Vague2.WAVE <= 25) { Destroy(gameObject); Main.HP -= 160; } if (Vague2.WAVE > 25 && Vague2.WAVE <= 32) { Destroy(gameObject); Main.HP -= 180; } } if (coll.gameObject.tag == "Rock") { GetComponent<Rigidbody>().velocity = pipeVelocitysaut; } } // Update is called once per frame void Update() { if (vietrolls <= 0) { GetComponent<Rigidbody>().velocity = pipeVelocitysaut; } textevietroll.text = "HP: " + vietrolls; textemorttroll.text = "Kills: " + trollmort; } } }[/color]
J'ai aussi disposer un texte sur le prefab ennemy afin de savoir combien de vie il lui reste et que si sa vie descende en dessous de zéro il meurt...
Mon problème vient du fait que si j'ai plusieurs ennemy en jeu et qui ont donc le même script , si j'en blesse un les deux perdes de la vie et meurt à la fin alors que j'en ai touché q'un !!
Ma question est de savoir s'il existe une solution à ce problème afin que chaque texte et donc vies des différents ennemies soit indépendants , merci d'avance pour les réponses.
a) NEVER EVER use static until you become a great coder.
b) NO GetComponent in a Update() loop. NEVER
c) USING "PlayerPrefs" LIKE THIS IS BAD..VERY
Try again..
Re: [DB-AL] Détruires des ennemies
Merci de t'as réponse mais ça répond pas à ma question, enfin je crois
- boubouk50
- ModoGenereux
- Messages : 6222
- Inscription : 28 Avr 2014 11:57
- Localisation : Saint-Didier-en-Bresse (71)
Re: [DB-AL] Détruires des ennemies
Masquée: static.
Une variable statique est partagée par toutes les instances, donc unique.
Une variable statique est partagée par toutes les instances, donc unique.
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation
Re: [DB-AL] Détruires des ennemies
Enfaîte merci de t'as réponse je vais tester pour voir si c'est plus pratique mais je viens de trouver une solution sur un asset unity ou il y a un EnemyHealth et en faisant comme eux c'est à dire déclarer 2 variables pour la vie tel que :
Et en gardant ma public static pour afficher la vie ça marche ^^
Code : Tout sélectionner
public int startingHealth = 100;
public int currentHealth;
void Awake()
{
currentHealth = startingHealth;
}
}
- boubouk50
- ModoGenereux
- Messages : 6222
- Inscription : 28 Avr 2014 11:57
- Localisation : Saint-Didier-en-Bresse (71)
Re: [RESOLU][DB-AL] Détruires des ennemies
Ça c’est toi qui voit, dans ce nouveau code, la variable n'est pas statique donc propre à chaque script. C’est juste un static à enlever du code...
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation