Un objet ne peut se faire toucher qu'une fois ?

Iop,

Je trouve pas comment faire pour qu’une action ne soit effectuée qu’une seule fois si 2 objet entrent en contact (enfin simplement j’ai pas d’idées là)

En fait c’est que il y a une explosion, je veux faire que l’objet “mechant” perde Xpv mais vue qu’ils renstent en contact le temps de l’animation de l’explosion, ça compte plusieurs fois l’action et ça me tue net le mechant.

Le truc c’est qu’un chrono “toucher” ne fonctionnera pas car si il y a plusieurs explosion au même endroit, seul une seule fera effet.

Merci de votre aide :smiley:

Tu créer une variable “touché”

====================================================================================
Quand l’objet méchant est en collision avec l’objet explosion et que la variable “touché” est égale à 0


faire -1 à la variable “vie” de méchant.
faire =1 à la variable “touché” de méchant.


Quand l’objet méchant n’est pas en collision avec explosion


faire =0 à la variable “touché” de méchant.


====================================================================================

Voilà, c’est tout bête et ça sert à pas mal d’autres trucs.

Ouai mais non, si il y a 2 explosion l’une sur l’autre, juste le décompte d’une sera effectué ^^

Ah oui, j’avais pas compris ça. Bah t’as plus qu’à te replier sur les ID.
Tu donne une ID à chaque explosion et à partir du système que j’ai indiqué plus haut tu teste si la collision est avec une explosion dont l’ID diffère de celles déjà rencontrés.

Donc faut que j’utilise un “pour chaque objet”, ou pas.
Bon tu m’a mis sur la piste, j’vais essayer de trouver ça s’en faire trop de boucle et reboucle xD

Oui, avec les ID vaut mieux utiliser “pour chaque objet” :slight_smile:.
Quand tu aura fini, tu pourra faire une screenshot et des explications pour les prochains ainsi que mettre [résolu] devant le nom du sujet. :smiley:

Ouaiouai t’inquiète je le ferais, mais je penses pas finir ça rapidement vue que cette condition doit s’appliquer pour 60 type de méchant et pour 5 type d’explosion, je vais éviter de mettre trop de “pour chaque objet”, il y en a déjà beaucoup.
Pour ça que j’ai dit tu m’a filé la piste, à moi de trouver la meilleure solution :laughing:

Et en créant une variable propre à l’objet ?

Ex :
On crée une variable “JoueurTouché” dans l’objet “explosion”

On crée un évènement :
si explosion.JoueurTouché = 0 et explosion en contact avec joueur
explosion.JoueurTouché=1
joueur.pv - 1

Non plus, il ne se fera pas toucher par les autres.
Il va se faire toucher par une explosion, la variable passe a 1 et fini ^^
Le seul truc qui serait faisable serait de mettre une variable dans l’objet explosion qui prend un id pour chaque objet existant et qui se met a 1 si il l’a touché pour pas qu’il puisse le toucher 2 fois, mais ça fait beaucoup de demande pour rien (imagine rien que 100 mob sur la map, et 50 tour qui tirent Oo )

Moi j’ai mis que si le mob se fait toucher pendant les images d’animations 3 à 5 (ien a 8 en tout) il perd des dommages. Vue que l’animation va super vite, il se fait toucher qu’une sele fois, à coup sûr ! (sauf si il passe dans la fumé qui est les 3 dernières images, mais qui ne fait pas mal :stuck_out_tongue: )

Et si tu mets la variable “JoueurTouché” dans l’objet Explosion ?.. :3

Mais ça ne marchera que pour le joueur, car il est unique …

Il doit surement y avoir un moyen pour gérer des zones à aire d’effet …
Avec un chrono ?
-1 toutes les secondes où les deux sprites sont en contact.
Au joueur de se débrouiller pour ne pas trainer au même endroit.

EDIT :

Peut être qu’en gérant plusieurs objets explosions (explosion1, explosion2, etc. ) …
On est quasi sûr qu’on ne peut avoir 10 explosions à l’écran par exemple, soit 10 objets explosion différents.

Compliqué, quand même. :frowning:

EDIT 2 :
Autre possibilité …
Au contact de l’explosion, on crée un objet bidon invisible, aux coordonnées du sprite en contact, et on enlève 1 à ses PV.
Si l’objet bidon est déjà créé aux coordonnées de l’objet, les PV ne seront pas enlevés.

L’idéal serait un tableau propre à chaque explosion, où l’objet en contact serait ajouté. Comme ça, il n’y aurait retranchement de Pv que si l’objet n’est pas listé dans le tableau de l’instance de l’explosion.