| instance_destroy | |
|
|
Auteur | Message |
---|
Triptidon Bonne participation
Messages : 74
| Sujet: instance_destroy Mer 6 Nov 2013 - 17:12 | |
| Bonjour, j'ai cherché dans le forum pour "destruction" et "destroy" et je n'ai pas trouvé alors je me permet de poser ma question :)désolé d'avance si j'ai mal cherché
j'ai un monstre, ou un terrain destructible. mes guns créent des nouvelles instances, les projectiles.
monstre: -create : je pose la santé à 10 points. -no more life : destroy -collision avec projectile : health-=1
projectile: -collision avec monstre : destroy
voilà ou est mon probleme : si il y a 10 monstres, et qu'un projectile vient à en tuer 1 seul, c'est tous mes monstres qui sont détruis. pareil avec les projectiles, si un seul projectile touche un monstre, tous les autres encore en mouvement disparaissent.
j'utilise les actions préconçues de destroy, et dans la description il est bien mis que cette action concerne toutes les instances du meme nom.
comment contourner ça simplement? car le instance_destroy(x,y,nom) impossible avec des instances en mouvement.
Dernière édition par Triptidon le Mer 6 Nov 2013 - 19:21, édité 1 fois |
|
| |
hofmeister Bavard
Messages : 109
| Sujet: Re: instance_destroy Mer 6 Nov 2013 - 17:47 | |
| Bonjour, Tu dois avoir une version différente de GM, parce que pour moi instance_destroy() c'est sans arguments. Tu n'as pas de fonction équivalente qui détruit l'instance actuelle? Sinon tu pourrais faire - Code:
-
with(monstre) { if id.health <=0 { instance_destroy(); } }
|
|
| |
onilink_ Modérateur
Messages : 9178 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: instance_destroy Mer 6 Nov 2013 - 18:16 | |
| with(monstre) ça équivaux au foreach(monstre) d'autres langages. Donc forcément ça s'applique a tous les monstres. En fait with agis différemment si le paramètre est un id d'objet ou un id d'instance. Tu as deux solutions: -mettre l’interaction dans l'event collision monstre (dans l'objet projectile) - Code:
-
with(other) instance_destroy() ici other est l'id du monstre qui entre en collision avec le projectile. -mettre la collision dans le monstre, soit par l'event de collision - Code:
-
instance_destroy() //si tu veux détruire aussi le projectile with(other) instance_destroy() soit dans l'event step: - Code:
-
if(place_meeting(x, y, projectile)) instance_destroy() mais dans ce cas la tu n'as pas accès a other. |
|
| |
Triptidon Bonne participation
Messages : 74
| Sujet: Re: instance_destroy Mer 6 Nov 2013 - 18:43 | |
| merci à vous 2. donc en fait si je te suis onilink le probleme vient juste du fait qu'il ne faut rien marquer entre les parentheses de instance_destroy() pour que la cible détruire soit uniquement l'instance touchée? donc en gros je résous juste mon probleme en faisant ça si je comprends bien: collision (projectile): pour réduire la vie de 1 de l'objet touché - Code:
-
with(other) health-=1 no more life (monstre): pour détruire le monstre qui n'a plus de vie - Code:
-
instance_destroy() collision (monstre) : pour détruire le projectile - Code:
-
with(other) instance_destroy() car si c'est pas le cas j'ai du mal mais vraiment du mal à comprendre en quoi ça résout le truc en tout cas je vais déjà essayer |
|
| |
Triptidon Bonne participation
Messages : 74
| Sujet: Re: instance_destroy Mer 6 Nov 2013 - 18:51 | |
| ok ça marche with(other) instance_destroy() le probleme c'est que je veux juste lui enlever 1 health et que si je mets dans l'event no more health : instance_destroy() et bien ça me supprime tous mes "monstres" du coup... |
|
| |
onilink_ Modérateur
Messages : 9178 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: instance_destroy Mer 6 Nov 2013 - 19:03 | |
| Car health est une variable globale de souvenir. Ce que tu dois faire, c'est créer une variable locale: #Create - Code:
-
myHealth = 50 #collision projectile - Code:
-
myHealth -= 1 with(other) instance_destroy() #step - Code:
-
if(myHealth <= 0) instance_destroy() |
|
| |
Triptidon Bonne participation
Messages : 74
| Sujet: Re: instance_destroy Mer 6 Nov 2013 - 19:06 | |
| super!! ça marche niquel merci, en combinant toutes vos réponses voilà le code final (avec biensur la variable myhealth ou autre posée dans l'event create du monstre comme tu l'as dit) - Code:
-
with(other) myhealth -=1 with(other) { if myhealth <=0 { instance_destroy(); } } merci encore! par contre ça m'amene juste naturellement à une seconde question: si le destroy/replace ou autre arrive en interne je pourrais pas utiliser other. par exemple je mets un timing et à la fin le monstre explose. il y a donc instance_change de l'instance monstre en l'instance d'explosion. mais du coup y'a plus de projectile pour dire que c'est "other" qui va se transformer... Razz |
|
| |
onilink_ Modérateur
Messages : 9178 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: instance_destroy Mer 6 Nov 2013 - 21:55 | |
| J'ai pas trop compris, mais si tu veux faire une action quand ton instance est détruite, t'as l'event destroy prévu a cet effet. |
|
| |
Térence Utilisateur confirmé: Rang *****
Messages : 2213 Localisation : Oui
| Sujet: Re: instance_destroy Mer 6 Nov 2013 - 22:17 | |
| Et si tu veux faire une animation à la mort de ton monstre, change juste le sprite avec sprite_index, pas d'instance, c'est beaucoup plus optimisé _________________ Je suis partie sur les ailes du vent et la tempête m'a ramenée.
|
|
| |
Triptidon Bonne participation
Messages : 74
| Sujet: Re: instance_destroy Mer 6 Nov 2013 - 23:19 | |
| oui autant pour moi, j'étais encore dans ma vision erronnée du probleme. tout est bon, j'ai appris pas mal de trucs, reste plus qu'à utiliser tout ça avec intelligence. |
|
| |
Contenu sponsorisé
| Sujet: Re: instance_destroy | |
| |
|
| |
| instance_destroy | |
|