| définir une nouvelle valeur a une variable d'un autre object | |
|
|
Auteur | Message |
---|
riri785 Débutant
Messages : 16
| Sujet: définir une nouvelle valeur a une variable d'un autre object Mar 26 Juin 2012 - 21:34 | |
| Bonjour a tous je voudrais s'avoir comment pouvons nous changer une variable d'un object depuis un autre object. exemple: j'ai un perso nommé obj_perso, et je veut que quand il est prés de l'ennemie nommée lui obj_mob1, et que quand j’appuie sur espace, il recule(sa sa marche) et que sa lui enleve de la vie, pour cela j'ai ajouter ce code dans l’évente espace: - Code:
-
if(obj_mob1.x > obj_perso.x && obj_mob1.x < obj_perso.x+70 && (((obj_mob1.y > obj_perso.y && obj_mob1.y < obj_perso.y+30) || (obj_mob1.y < obj_perso.y && obj_mob1.y > obj_perso.y-30) || (obj_mob1.y == obj_perso.y))) ){ obj_mob1.x+=90; vie_mob1 -=50; }
if(obj_mob1.x < obj_perso.x && obj_mob1.x > obj_perso.x-70 && (((obj_mob1.y < obj_perso.y && obj_mob1.y > obj_perso.y-30) || (obj_mob1.y > obj_perso.y && obj_mob1.y < obj_perso.y+30) || (obj_mob1.y == obj_perso.y))) ){ obj_mob1.x-=90; vie_mob1-=50 }
et je veut donc que l'object obj_mob1 reçoit la nouvelle valeurs de sa vie, vie_mob1. voila j’espère que l'on vas m'aider . |
|
| |
65c816 Très bonne participation
Messages : 148 Projet Actuel : Jeux retro Beathem'up all
| Sujet: Re: définir une nouvelle valeur a une variable d'un autre object Mar 26 Juin 2012 - 22:39 | |
| je veux pas dire de betise mais il me semble que c'est comme pour sa variable "x" - Code:
-
obj_mobi1.vie_mob1-=50;
serait correct |
|
| |
riri785 Débutant
Messages : 16
| Sujet: Re: définir une nouvelle valeur a une variable d'un autre object Mar 26 Juin 2012 - 22:58 | |
| salut 65c816 , effectivement sa marche merci , mais par contre sa ne marche que pour la changer, mais pas pour la vérifier/la lire. par exemple je veut faire sa dans obj_perso: - Code:
-
if(obj_mob1.vie_mob1 >1){ //et du code ici }
amis sa me met qu'il ne connait pas vie_mob1. |
|
| |
65c816 Très bonne participation
Messages : 148 Projet Actuel : Jeux retro Beathem'up all
| Sujet: Re: définir une nouvelle valeur a une variable d'un autre object Mar 26 Juin 2012 - 23:06 | |
| les variable vie/nrj en général je préfère qu'elles soient gérées par les objects eux même ça évite des soucis bon aprés dans le step de obj_mobi1 tu mets seulement ça - Code:
-
if ( vie_mob1 < 1) { conséquences; } |
|
| |
onilink_ Modérateur
Messages : 9183 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: définir une nouvelle valeur a une variable d'un autre object Mar 26 Juin 2012 - 23:17 | |
| Avec instance.attribut tu peut lire et écrire. |
|
| |
riri785 Débutant
Messages : 16
| Sujet: Re: définir une nouvelle valeur a une variable d'un autre object Mar 26 Juin 2012 - 23:23 | |
| Oui je les fait sa aussi mais je t'explique , en faite j'ai bien mit: - Code:
-
if ( vie_mob1 < 1) { //et la je détruis l'instance + sa position }
mais du coup quand j'appuie sur espace ba sa me met une erreur disant que obj_mob1.x n’existe plus, logique il est mort donc je les supprimer. alors dans obj_perso dans l’évènement "j'appuie sur espace", je doit en gros lui indiquer que je peut le tuer que si il est mort ^^. Donc je fait sa: - Code:
-
if(obj_mob1.vie_mob1 >1){
if(obj_mob1.x > obj_perso.x && obj_mob1.x < obj_perso.x+70 && (((obj_mob1.y > obj_perso.y && obj_mob1.y < obj_perso.y+30) || (obj_mob1.y < obj_perso.y && obj_mob1.y > obj_perso.y-30) || (obj_mob1.y == obj_perso.y))) ){ obj_mob1.x+=90; obj_mob1.vie_mob1 -=100; }
if(obj_mob1.x < obj_perso.x && obj_mob1.x > obj_perso.x-70 && (((obj_mob1.y < obj_perso.y && obj_mob1.y > obj_perso.y-30) || (obj_mob1.y > obj_perso.y && obj_mob1.y < obj_perso.y+30) || (obj_mob1.y == obj_perso.y))) ){ obj_mob1.x-=90; obj_mob1.vie_mob1 -=100; }
}
et c'est la qu'il me dit qu'il ne connait pas vie_mob1. |
|
| |
65c816 Très bonne participation
Messages : 148 Projet Actuel : Jeux retro Beathem'up all
| Sujet: Re: définir une nouvelle valeur a une variable d'un autre object Mar 26 Juin 2012 - 23:29 | |
| mais vie_mob1 est bien declaré dans obj_mob1? |
|
| |
riri785 Débutant
Messages : 16
| Sujet: Re: définir une nouvelle valeur a une variable d'un autre object Mar 26 Juin 2012 - 23:32 | |
| -oui vie_mob1 est bien declaré dans obj_mob1
-Heuu sa veut dire quoi instance.attribut ?
je suis désoler je débute depuis aujourd'hui =/
|
|
| |
onilink_ Modérateur
Messages : 9183 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: définir une nouvelle valeur a une variable d'un autre object Mar 26 Juin 2012 - 23:51 | |
| Dans GM t'as les objets, que t'instancie soit quand tu les dépose dans une room, soit quand tu fait un instance_create. Une instance se veux une copie d'un objet, avec ses attributs et méthodes, normalement. Dans GM on a le droit qu'aux attributs, qui sont les variables locales de l'instance. Par exemple, dans le create de ton objet player tu met - Code:
-
maVie = 0 munitions = 10 Tu viens de créer deux variables locales (ou attributs), locales car elles sont uniquement accessible depuis l'instance, a moins d'utiliser le fameux instance.attribut. Je te conseille vivement de lire la doc a propos des instances, ou de lire ce tuto: https://cbna.forumactif.com/t10991-tutorielgml-objets-et-instancesD'ailleurs si t'est avide de savoir : https://cbna.forumactif.com/t10919-tutoriels-apprendre-le-gml |
|
| |
riri785 Débutant
Messages : 16
| Sujet: Re: définir une nouvelle valeur a une variable d'un autre object Mer 27 Juin 2012 - 0:07 | |
| D'accord je comprend mieux, sa revient au même que les classes en c++. Mais alors j'ai un problème d'utilisation, ou met on se fameux instance_create, car j'ai mit dans le creat de obj_mob1: - Code:
-
ins_mob1 = instance_create(128, 32, obj_mob1);
et quand je lance, sa me met que sa a cesser de fonctionner. |
|
| |
onilink_ Modérateur
Messages : 9183 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: définir une nouvelle valeur a une variable d'un autre object Mer 27 Juin 2012 - 0:16 | |
| C'est normal, tu crée une instance de obj_mob1 dans l'obj_mob1. Donc ça va te créer une infinité d'instance, et forcément, GM ne le supporte pas x)
|
|
| |
riri785 Débutant
Messages : 16
| Sujet: Re: définir une nouvelle valeur a une variable d'un autre object Mer 27 Juin 2012 - 0:32 | |
| Donc je le créer dans obj_perso: - Code:
-
ins_mob1 = instance_create(128, 32, obj_mob1);
dans obj_mob1 je met: - Code:
-
vie = 200;
Et donc je retourne dans obj_perso et je marque: - Code:
-
if(ins_mob1.vie >1){
if(obj_mob1.x > obj_perso.x && obj_mob1.x < obj_perso.x+70 && (((obj_mob1.y > obj_perso.y && obj_mob1.y < obj_perso.y+30) || (obj_mob1.y < obj_perso.y && obj_mob1.y > obj_perso.y-30) || (obj_mob1.y == obj_perso.y))) ){ obj_mob1.x+=90; ins_mob1.vie -=100; }
if(obj_mob1.x < obj_perso.x && obj_mob1.x > obj_perso.x-70 && (((obj_mob1.y < obj_perso.y && obj_mob1.y > obj_perso.y-30) || (obj_mob1.y > obj_perso.y && obj_mob1.y < obj_perso.y+30) || (obj_mob1.y == obj_perso.y))) ){ obj_mob1.x-=90; ins_mob1.vie -=100; }
}
et la comme d'habitude "Unknown variable vie" dans "if(ins_mob1.vie >1){" de mon obj_perso. help please |
|
| |
onilink_ Modérateur
Messages : 9183 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: définir une nouvelle valeur a une variable d'un autre object Mer 27 Juin 2012 - 0:37 | |
| Tu peut m'envoyer ton gmk/gm6 ?
|
|
| |
riri785 Débutant
Messages : 16
| Sujet: Re: définir une nouvelle valeur a une variable d'un autre object Mer 27 Juin 2012 - 0:48 | |
| |
|
| |
onilink_ Modérateur
Messages : 9183 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: définir une nouvelle valeur a une variable d'un autre object Mer 27 Juin 2012 - 1:07 | |
| Alors bon déjà, si tu veux alléger ton moteur, sache que GM gère déjà les collisions.
Tu peut utiliser place_meeting pour savoir si ton objet est en collision avec un autre.
Je serais toi, je recommencerais a zéro en faisant divers tests.
Pour les déplacements, je te conseille d'utiliser directement les coordonnées de ton objet. Par exemple pour aller a droite : x += 1 a gauche x -= 1, etc
Donc pour un code de déplacement, on aurais if(keyboard_check(vk_right)) x += 1 et pareil pour les autres directions
Quand aux collisions, si tu veux savoir si t'est en collision avec un autre objet tu peut juste faire: if(place_meeting(x, y, lautreObject)) patatipatata
Tu peut aussi utiliser les instance_place et instance_position qui te donnent l'id de l'instance touchée.
Sinon pour ton problème, je doit être trop crevé mais j'ai pas trouvé. Tout me semble bon.
|
|
| |
riri785 Débutant
Messages : 16
| Sujet: Re: définir une nouvelle valeur a une variable d'un autre object Mer 27 Juin 2012 - 1:20 | |
| Okk alors merci pour les astuce pour alléger le moteur, par contre pour les collision je n'ai utiliser les fonction inclue dans GM car je voulait faire une sorte de hitbox de tant de pixels et donc pas avoir une collision directe. En tout cas merci, je revoie sa demain, si tu trouve la solution a mon problème sa serait sympas de m'aider a le résoudre, merci . |
|
| |
onilink_ Modérateur
Messages : 9183 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: définir une nouvelle valeur a une variable d'un autre object Mer 27 Juin 2012 - 1:29 | |
| Alors si tu veux faire des collisions bbox manuellement, va dans ton sprite, ensuite clique sur [Modify Mask] Ensuite sélectionne Manual, choisis les valeurs, et en bas, remplace Precise par Rectangle.
Ensuite plus qu'a utiliser place_meeting normalement :p |
|
| |
Contenu sponsorisé
| Sujet: Re: définir une nouvelle valeur a une variable d'un autre object | |
| |
|
| |
| définir une nouvelle valeur a une variable d'un autre object | |
|