AccueilAccueil  FAQFAQ  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  Connexion  

 

 instance_destroy

Aller en bas 
4 participants
AuteurMessage
Triptidon
Bonne participation
Triptidon


Messages : 74

instance_destroy Empty
MessageSujet: instance_destroy   instance_destroy EmptyMer 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
Revenir en haut Aller en bas
hofmeister
Bavard



Messages : 109

instance_destroy Empty
MessageSujet: Re: instance_destroy   instance_destroy EmptyMer 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();
}
}
Revenir en haut Aller en bas
onilink_
Modérateur
onilink_


Messages : 9178
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

instance_destroy Empty
MessageSujet: Re: instance_destroy   instance_destroy EmptyMer 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.

_________________
instance_destroy Runningpotato1instance_destroy TvF6GED instance_destroy MdetltS
Revenir en haut Aller en bas
Triptidon
Bonne participation
Triptidon


Messages : 74

instance_destroy Empty
MessageSujet: Re: instance_destroy   instance_destroy EmptyMer 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 Razz

en tout cas je vais déjà essayer Smile
Revenir en haut Aller en bas
Triptidon
Bonne participation
Triptidon


Messages : 74

instance_destroy Empty
MessageSujet: Re: instance_destroy   instance_destroy EmptyMer 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... SadSad
Revenir en haut Aller en bas
onilink_
Modérateur
onilink_


Messages : 9178
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

instance_destroy Empty
MessageSujet: Re: instance_destroy   instance_destroy EmptyMer 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()

_________________
instance_destroy Runningpotato1instance_destroy TvF6GED instance_destroy MdetltS
Revenir en haut Aller en bas
Triptidon
Bonne participation
Triptidon


Messages : 74

instance_destroy Empty
MessageSujet: Re: instance_destroy   instance_destroy EmptyMer 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
Revenir en haut Aller en bas
onilink_
Modérateur
onilink_


Messages : 9178
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

instance_destroy Empty
MessageSujet: Re: instance_destroy   instance_destroy EmptyMer 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.

_________________
instance_destroy Runningpotato1instance_destroy TvF6GED instance_destroy MdetltS
Revenir en haut Aller en bas
Térence
Utilisateur confirmé: Rang *****
Térence


Messages : 2213
Localisation : Oui

instance_destroy Empty
MessageSujet: Re: instance_destroy   instance_destroy EmptyMer 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é Smile

_________________
Je suis partie sur les ailes du vent et la tempête m'a ramenée.
Revenir en haut Aller en bas
Triptidon
Bonne participation
Triptidon


Messages : 74

instance_destroy Empty
MessageSujet: Re: instance_destroy   instance_destroy EmptyMer 6 Nov 2013 - 23:19

oui autant pour moi, j'étais encore dans ma vision erronnée du probleme. mrgreen2 
tout est bon, j'ai appris pas mal de trucs, reste plus qu'à utiliser tout ça avec intelligence.
Revenir en haut Aller en bas
Contenu sponsorisé





instance_destroy Empty
MessageSujet: Re: instance_destroy   instance_destroy Empty

Revenir en haut Aller en bas
 
instance_destroy
Revenir en haut 
Page 1 sur 1

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Forum Le CBNA :: Développement :: Entraide débutants-
Sauter vers: