AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  Connexion  

Partagez | 
 

 instance_destroy

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
Triptidon
Bonne participation
avatar

Messages : 74

MessageSujet: instance_destroy   Mer 6 Nov 2013 - 16: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 - 18:21, édité 1 fois
Revenir en haut Aller en bas
hofmeister
Bavard


Messages : 109

MessageSujet: Re: instance_destroy   Mer 6 Nov 2013 - 16: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
avatar

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

MessageSujet: Re: instance_destroy   Mer 6 Nov 2013 - 17: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.

_________________
                 
Revenir en haut Aller en bas
Triptidon
Bonne participation
avatar

Messages : 74

MessageSujet: Re: instance_destroy   Mer 6 Nov 2013 - 17: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
avatar

Messages : 74

MessageSujet: Re: instance_destroy   Mer 6 Nov 2013 - 17: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
avatar

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

MessageSujet: Re: instance_destroy   Mer 6 Nov 2013 - 18: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()

_________________
                 
Revenir en haut Aller en bas
Triptidon
Bonne participation
avatar

Messages : 74

MessageSujet: Re: instance_destroy   Mer 6 Nov 2013 - 18: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
avatar

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

MessageSujet: Re: instance_destroy   Mer 6 Nov 2013 - 20: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.

_________________
                 
Revenir en haut Aller en bas
Térence
Utilisateur confirmé: Rang *****
avatar

Messages : 2213
Localisation : Oui

MessageSujet: Re: instance_destroy   Mer 6 Nov 2013 - 21: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
avatar

Messages : 74

MessageSujet: Re: instance_destroy   Mer 6 Nov 2013 - 22: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é




MessageSujet: Re: instance_destroy   

Revenir en haut Aller en bas
 
instance_destroy
Voir le sujet précédent Voir le sujet suivant 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: