AccueilAccueil  FAQFAQ  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  Connexion  
Le Deal du moment :
Funko POP! Jumbo One Piece Kaido Dragon Form : ...
Voir le deal

 

 Différencier deux mêmes objets

Aller en bas 
+4
Térence
Asu
glcraft
loic01222
8 participants
AuteurMessage
loic01222
Plutôt bien
loic01222


Messages : 49

Différencier deux mêmes objets Empty
MessageSujet: Différencier deux mêmes objets   Différencier deux mêmes objets EmptyVen 16 Mai 2014 - 23:21

Bonjour !

Je ne sais pas si la réponse à ma question est toute bête ou si c'est pas de mon niveau, mais j'ai un objet ennemi qui, quand il est créé, crée un objet de "vision" (un triangle qui part de ses yeux et qui va devant lui), et ce triangle le suit, et se tourne en même temps que lui.
Le problème, c'est que comme je voudrais créer plusieurs de ces ennemis, lorsque les différents objets de vision vont tous se placer devant le même ennemi. Ce qui est logique, je le conçois !
Mais comment faire pour que chaque ennemi se crée un objet de vision propre à lui-même ?

Merci d'avance !
Revenir en haut Aller en bas
glcraft
Utilisateur confirmé: Rang *****
glcraft


Messages : 1698
Localisation : Entre l'Espagne, l'Italie, la Suisse, L'allemagne et le RU :P
Projet Actuel : Jeu de survie avancé
||--------

Différencier deux mêmes objets Empty
MessageSujet: Re: Différencier deux mêmes objets   Différencier deux mêmes objets EmptyVen 16 Mai 2014 - 23:32

il faut que lors de la creation de l'objet tu lui declare une variable qui sera l'id de son objet parent :

dans l'objet ennemi:

Code:
obj = instance create(obj_vision, 0,0);
obj.m_parent = ID // Je me souviens plus exactement du nom de la variable id d'un objet, il faudrait cherche dans la documentation



puis ensuite dans l'objet vision tu peut faire

Code:
x=m_parent.x+lengthdir_x(obj.m_parent.direction, 10);
y=m_parent.y+lengthdir_y(obj.m_parent.direction, 10);
Revenir en haut Aller en bas
http://gameblog49.skyblog.com/
loic01222
Plutôt bien
loic01222


Messages : 49

Différencier deux mêmes objets Empty
MessageSujet: Re: Différencier deux mêmes objets   Différencier deux mêmes objets EmptySam 17 Mai 2014 - 12:56

Donc je crée une variable dans l'objet vision qui définira son ID à partir de, par exemple, une variable globale qui s'incrémente à chaque fois qu'un objet vision est créé ?

EDIT : Je pense que je vais plutôt créer plusieurs objets différents, du genre "obj_ennemi1", "obj_vision1", "obj_ennemi2", "obj_vision2", etc.
Ça va me limiter en nombre d'ennemi et c'est pas la solution la plus pratique (loin de là), mais n'étant pas doué en GML je pense que ça serait une bonne solution...
Revenir en haut Aller en bas
Asu
Utilisateur confirmé: Rang ****
Asu


Messages : 895

Différencier deux mêmes objets Empty
MessageSujet: Re: Différencier deux mêmes objets   Différencier deux mêmes objets EmptySam 17 Mai 2014 - 18:58

ça serait pas plus pratique de simplement de faire tout ça dans l'event draw de l'objet ennemi?

_________________
‎<‎Cysteine‎>‎ nON mais la touche maj s'active/se désactive toute seule
‎<‎Cysteine‎>‎ et a du mal à réponDRE QUANd j'appuie dessus
‎<‎Cysteine‎>‎ et je l'ai démont2? IL Ny a rien DEDANs
Revenir en haut Aller en bas
Térence
Utilisateur confirmé: Rang *****
Térence


Messages : 2213
Localisation : Oui

Différencier deux mêmes objets Empty
MessageSujet: Re: Différencier deux mêmes objets   Différencier deux mêmes objets EmptySam 17 Mai 2014 - 22:35

La variable c'est tout simplement id (en minuscules), après le code de gabin49 marche parfaitement.
Et nan je pense pas soundii, puisque je suppose que ia aussi toute une partie du code pour détecter des objets dans le cône.

_________________
Je suis partie sur les ailes du vent et la tempête m'a ramenée.
Revenir en haut Aller en bas
chopsuey
Utilisateur confirmé: Rang ***
chopsuey


Messages : 523
Localisation : saint etienne
Projet Actuel : All work and no play makes Jack a dull boy
All work and no play makes Jack a dull boy
All work and no play makes Jack a dull boy
...

Différencier deux mêmes objets Empty
MessageSujet: Re: Différencier deux mêmes objets   Différencier deux mêmes objets EmptyDim 18 Mai 2014 - 19:12

Mais non c'est tout simple ne fais surtout pas ça !  crossa 

Dans l'event create de ton objet ennemi tu crée ton objet vision avec instance_create. Cette fonction en plus de créer une instance va retourner la variable "id" de cette nouvelle instance.
Pour récupérer cette id il faut l'associer à une variable exemple:

id_vision=instance_create(x,y,obj_vision)  

l'instance sera créer et id_vision serra égal à l'id de cette instance.

Maintenant que tu connais l'identité de cette instance tu peux modifier ses variables.
Tu peux lui dire que son x et son y seront égal au x et y de l'instance actuel (l'ennemi qui là créer)
Dans step ennemi:

id_vision.x=x
id_vision.y=y

Le x de id_vision soit le x de l'identité de l'instance créer est = au x de l'instance ennemi.

_________________
Spoiler:
Revenir en haut Aller en bas
glcraft
Utilisateur confirmé: Rang *****
glcraft


Messages : 1698
Localisation : Entre l'Espagne, l'Italie, la Suisse, L'allemagne et le RU :P
Projet Actuel : Jeu de survie avancé
||--------

Différencier deux mêmes objets Empty
MessageSujet: Re: Différencier deux mêmes objets   Différencier deux mêmes objets EmptyDim 18 Mai 2014 - 21:41

C'est exactement ce que j'ai fait, juste que c'est l'objet ennemi qui garde l'id de l'autre mais bon...
Revenir en haut Aller en bas
http://gameblog49.skyblog.com/
chopsuey
Utilisateur confirmé: Rang ***
chopsuey


Messages : 523
Localisation : saint etienne
Projet Actuel : All work and no play makes Jack a dull boy
All work and no play makes Jack a dull boy
All work and no play makes Jack a dull boy
...

Différencier deux mêmes objets Empty
MessageSujet: Re: Différencier deux mêmes objets   Différencier deux mêmes objets EmptyDim 18 Mai 2014 - 21:55

Ouais je sais mais il a pas compris alors je lui réexplique à ma façon.

_________________
Spoiler:
Revenir en haut Aller en bas
glcraft
Utilisateur confirmé: Rang *****
glcraft


Messages : 1698
Localisation : Entre l'Espagne, l'Italie, la Suisse, L'allemagne et le RU :P
Projet Actuel : Jeu de survie avancé
||--------

Différencier deux mêmes objets Empty
MessageSujet: Re: Différencier deux mêmes objets   Différencier deux mêmes objets EmptyDim 18 Mai 2014 - 22:25

ah ok, tu voulais parler de sa solution drastique, j'avais mal compris XD
C'est pas la première fois que je vois des personnes qui simplifie la tache a faire en passant par un horrible chemin...
Une fois, c'était un gars qui de plaignait d'une baisse conséquente du FPS dès qu'il y avais 10 ennemi sur mon ecran (j'ai quand même une GTX660, pour un jeu 2D vue du dessus sorti de GM, faut pas se leurrer...). On a regarder ensemble d'où venait le problème pendant un long moment et il m'a fait voir sa collision des murs avec les ennemis. Le mur était un ensemble de 2 sprites : une pour la couleur et une pour le masque qui faisait TOUTE la room. Et pour couronner le tout, le jeu était développé en 4k (3 840 × 2 160 pixels) donc faire du pixels perfect avec un sprite 4k, ca le fait pas (Mais c'est pas ca le pire, le pire, c'est qu'il ne m'a pas cru et a garder cette technique -_-')


Tout ca pour dire qu'il ne faut pas passer obligatoirement par la simplicité, celle ci nous induit en erreur et compliquera le développement du jeu et la détection d'erreurs.
Revenir en haut Aller en bas
http://gameblog49.skyblog.com/
chopsuey
Utilisateur confirmé: Rang ***
chopsuey


Messages : 523
Localisation : saint etienne
Projet Actuel : All work and no play makes Jack a dull boy
All work and no play makes Jack a dull boy
All work and no play makes Jack a dull boy
...

Différencier deux mêmes objets Empty
MessageSujet: Re: Différencier deux mêmes objets   Différencier deux mêmes objets EmptyLun 19 Mai 2014 - 1:15

Quand je débutais j'en est fais des conneries comme ça  roll2 
Ya plus de 3 ans quand j'ai essayé pour la 1er fois de faire un jeu avec game maker j'avais à peut près 50 objets différent pour les déplacements de mon perso. C'était à la fois très débile et en même temps très complexe, une vrais usine à gaz...
Et je comptais dupliquer tous ces objets pour chaque armes ou accessoire différents  rire 
Je comprend pas comment j'ai fais pour être aussi con.

_________________
Spoiler:
Revenir en haut Aller en bas
glcraft
Utilisateur confirmé: Rang *****
glcraft


Messages : 1698
Localisation : Entre l'Espagne, l'Italie, la Suisse, L'allemagne et le RU :P
Projet Actuel : Jeu de survie avancé
||--------

Différencier deux mêmes objets Empty
MessageSujet: Re: Différencier deux mêmes objets   Différencier deux mêmes objets EmptyLun 19 Mai 2014 - 1:57

On sent bien qu'on est tous passer par la XD
(d'ailleurs en parlant d’être con, je rappelle qu'il y a toujours mon ancien blog de quand j'avais 13 ans, c'est à peu près a cette age la ou j'ai toucher a game maker XD, il est dans mon lien de site web, a coté du lien "MSN")
Revenir en haut Aller en bas
http://gameblog49.skyblog.com/
FlavoursGames
Très bonne participation



Messages : 111

Différencier deux mêmes objets Empty
MessageSujet: Re: Différencier deux mêmes objets   Différencier deux mêmes objets EmptySam 24 Mai 2014 - 19:01

Bonjour,

J'aurai un problème similaire a celui-ci, enfaite j'aimerai que game maker vérifie une condition pour tout les objets du même nom.

ma condition est la suivante :
if (oPlayer.y < oPlatform_6.y and oPlayer.y > oPlatform_6.y-80)

seulement si il y a deux objet oPlatform_6 dans la même room cela ne marchera que si le joueur ce trouve sur la toute première oPlatform_6 poser.

j'ai donc essayer un "truc" comme sa:
if (oPlayer.y < oPlatform_6.id.y and oPlayer.y > oPlatform_6.id.y-80)

sans résultat... Sad

j'aimerai éviter de passer par un "instance_create".
Une idée ou suggestion ? :/
Revenir en haut Aller en bas
Térence
Utilisateur confirmé: Rang *****
Térence


Messages : 2213
Localisation : Oui

Différencier deux mêmes objets Empty
MessageSujet: Re: Différencier deux mêmes objets   Différencier deux mêmes objets EmptySam 24 Mai 2014 - 19:14

Tu fais une boucle en parcourant tous les objets. Tu peux récupérer le nombre d'objet avec instance_count, puis l'id avec le tableau instance_id. Ensuite t'as juste à vérifier que c'est bien le bon type d'objet avec object_index.
Si tu veux gagner en perfs, tu crée une liste de tes objets au début du jeu (et en la maintenant a jour), comme ca t'as moins d'objets a parcourir.

_________________
Je suis partie sur les ailes du vent et la tempête m'a ramenée.
Revenir en haut Aller en bas
FlavoursGames
Très bonne participation



Messages : 111

Différencier deux mêmes objets Empty
MessageSujet: Re: Différencier deux mêmes objets   Différencier deux mêmes objets EmptySam 24 Mai 2014 - 19:25

Quelque chose comme sa :

var i;
for (i = 0; i < instance_count; i += 1;)
{
with (instance_id[i]) speed += 0.1;
}

C'est un exemple pécho dans le manuel lol, je connaissais pas ces fonctions Smile.
Les objets qu'ils va parcourir sont ceux qui ce trouvent dans la room ?
Revenir en haut Aller en bas
Térence
Utilisateur confirmé: Rang *****
Térence


Messages : 2213
Localisation : Oui

Différencier deux mêmes objets Empty
MessageSujet: Re: Différencier deux mêmes objets   Différencier deux mêmes objets EmptySam 24 Mai 2014 - 19:26

C'est exactement ca Wink
A noter qu'il ne tient pas compte des objets désactivés.

_________________
Je suis partie sur les ailes du vent et la tempête m'a ramenée.
Revenir en haut Aller en bas
FlavoursGames
Très bonne participation



Messages : 111

Différencier deux mêmes objets Empty
MessageSujet: Re: Différencier deux mêmes objets   Différencier deux mêmes objets EmptySam 24 Mai 2014 - 19:37

Merci beaucoup! Smile
Mais comment l'utiliser avec ma condition ?
Je viens de faire un test et sa n'as pas marcher :/
Revenir en haut Aller en bas
Térence
Utilisateur confirmé: Rang *****
Térence


Messages : 2213
Localisation : Oui

Différencier deux mêmes objets Empty
MessageSujet: Re: Différencier deux mêmes objets   Différencier deux mêmes objets EmptySam 24 Mai 2014 - 20:01

for(i=0;i<instance_count;i+=1){
obj=instance_id[i];
if(obj.objetc_index==tonObjet){
with(obj){
if (oPlayer.y < y and oPlayer.y > y-80){
// ton code
}
}
}
}

_________________
Je suis partie sur les ailes du vent et la tempête m'a ramenée.
Revenir en haut Aller en bas
D-z
Utilisateur confirmé: Rang *****
D-z


Messages : 1611
Localisation : Montpellier

Différencier deux mêmes objets Empty
MessageSujet: Re: Différencier deux mêmes objets   Différencier deux mêmes objets EmptySam 24 Mai 2014 - 20:06

Et maintenant on se rappelle que with(obj_tonObjet) {...} parcourt toutes les instances de cet objet ;)

_________________
 
Home is not a place, it's a feeling.
Revenir en haut Aller en bas
Térence
Utilisateur confirmé: Rang *****
Térence


Messages : 2213
Localisation : Oui

Différencier deux mêmes objets Empty
MessageSujet: Re: Différencier deux mêmes objets   Différencier deux mêmes objets EmptySam 24 Mai 2014 - 20:23

awesome Je me suis posé la question, mais je pensais qu'il prenait la dernière instance crée... ^^'

_________________
Je suis partie sur les ailes du vent et la tempête m'a ramenée.
Revenir en haut Aller en bas
FlavoursGames
Très bonne participation



Messages : 111

Différencier deux mêmes objets Empty
MessageSujet: Re: Différencier deux mêmes objets   Différencier deux mêmes objets EmptyDim 25 Mai 2014 - 0:07

Sa marche  snif (pleure de joie, sa fait plusieurs jour que j'étais dessus enfaite, j'ai mis du temps a comprendre que GameMaker ne vérifiait pas la condition pour toute les même instance lol ).
Merci beaucoup Terence!
Revenir en haut Aller en bas
D-z
Utilisateur confirmé: Rang *****
D-z


Messages : 1611
Localisation : Montpellier

Différencier deux mêmes objets Empty
MessageSujet: Re: Différencier deux mêmes objets   Différencier deux mêmes objets EmptyDim 25 Mai 2014 - 9:32

Je complète donc :

Code:
with(oPlatform) {
   if (other.y < y && other.y > y - 80) {
       //...
   }
}

Explications (voir ici pour la doc) :
- with(nomObjet) parcourt toutes les instances de ce type
- à l'intérieur d'un with, other est l'instance qui a lancé le with. Ça te sera très utile dès lors que tu voudras gérer plusieurs instances plutôt qu'un seul joueur (les ennemis par exemple).

_________________
 
Home is not a place, it's a feeling.
Revenir en haut Aller en bas
FlavoursGames
Très bonne participation



Messages : 111

Différencier deux mêmes objets Empty
MessageSujet: Re: Différencier deux mêmes objets   Différencier deux mêmes objets EmptyDim 25 Mai 2014 - 16:15

C'est d'ailleurs ce que je cherche a faire maintenant merci Smile.
mais comme with parcours toute les instances de ce type, j'avais pas besoin de faire une boucle et d’utiliser instance_id etc.. non ?
Other représente n'importe qu'elle objet respectant la condition c'est sa ? Smile
Revenir en haut Aller en bas
onilink_
Modérateur
onilink_


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

Différencier deux mêmes objets Empty
MessageSujet: Re: Différencier deux mêmes objets   Différencier deux mêmes objets EmptyDim 25 Mai 2014 - 16:48

other indique l'id de l'instance qui a utilisé with.

_________________
Différencier deux mêmes objets Runningpotato1Différencier deux mêmes objets TvF6GED Différencier deux mêmes objets MdetltS
Revenir en haut Aller en bas
FlavoursGames
Très bonne participation



Messages : 111

Différencier deux mêmes objets Empty
MessageSujet: Re: Différencier deux mêmes objets   Différencier deux mêmes objets EmptyDim 25 Mai 2014 - 17:06

Ah sa m'aide pas trop alors, comment faire pour comparer un ennemis qui lui aura plusieurs même instance dans la room, a la platform qui a elle aussi a plusieurs même instance ?

Code:
  // Platform Object
   for (i=0; i < instance_count; i++)
   {
   platform = instance_id[i];
   if (platform.object_index == oPlatform_6x)
      {
      with(platform)
          {
          if (oPlayer.y < y and oPlayer.y > y-80) and (oPlayer.x >= x and oPlayer.x <= x+144)
             {
             // Mes fonctions
             }
          }

Je rajoute une autre boucle a l’intérieur de la conditions " if platform.object_index == oPlatform_6x " ?
qui elle cherchera l'objet ennemis pour ensuite faire la comparaison entre les deux (ennemis et platforme ) ?
Revenir en haut Aller en bas
Térence
Utilisateur confirmé: Rang *****
Térence


Messages : 2213
Localisation : Oui

Différencier deux mêmes objets Empty
MessageSujet: Re: Différencier deux mêmes objets   Différencier deux mêmes objets EmptyDim 25 Mai 2014 - 18:02

En fait le with et le nom de l'instance ca remplace mon code, donc pour tout comparer entre eux :
with(ennemi){
with(plateforme){
// tes tests, ou self vaut la plateforme courante et other l'ennemi courant
}
}
Pour comprendre le plus simple ca reste d'afficher des messages avec les id de self et other.

_________________
Je suis partie sur les ailes du vent et la tempête m'a ramenée.
Revenir en haut Aller en bas
FlavoursGames
Très bonne participation



Messages : 111

Différencier deux mêmes objets Empty
MessageSujet: Re: Différencier deux mêmes objets   Différencier deux mêmes objets EmptyDim 25 Mai 2014 - 19:12

Ah okey, je savais pas qu'on pouvais faire sa avec les with, sa marche impec! Merci a tous pour votre aide et patience Smile!
Revenir en haut Aller en bas
FlavoursGames
Très bonne participation



Messages : 111

Différencier deux mêmes objets Empty
MessageSujet: Re: Différencier deux mêmes objets   Différencier deux mêmes objets EmptyMer 4 Juin 2014 - 13:14

Bonjour,

Je reviens vers vous car j'aimerai savoir si quelqu'un sait comment comparer plus que 2 objets entre eux ?
par exemple 4 ?

je peut rajouter plus que 2 with() dans ma boucle ? et mettre le nom de l'objet directement plutôt que self et other ?
Revenir en haut Aller en bas
Térence
Utilisateur confirmé: Rang *****
Térence


Messages : 2213
Localisation : Oui

Différencier deux mêmes objets Empty
MessageSujet: Re: Différencier deux mêmes objets   Différencier deux mêmes objets EmptyMer 4 Juin 2014 - 18:14

Faut que tu passe par des variables intermédiaires : monobj=self dans tes boucles, mais tu va ptet devoir utiliser des variables globales :/
M'enfin ca reste merdique niveau optimisation, essaie de passer par des scripts ou de faire autrement... (deja rien que le nombre d'itérations avec 4 boucles imbriquées... :/)

_________________
Je suis partie sur les ailes du vent et la tempête m'a ramenée.
Revenir en haut Aller en bas
FlavoursGames
Très bonne participation



Messages : 111

Différencier deux mêmes objets Empty
MessageSujet: Re: Différencier deux mêmes objets   Différencier deux mêmes objets EmptyMer 4 Juin 2014 - 18:30

Ce que je veux programmer est plutôt compliquer pour moi...

Enfaite y faudrait que je fasse une première condition qui test sur qu'elle plateforme ce trouve le joueur
ensuite je fais une autres condition qui test si la plateforme ou ce trouve le joueur n'est en collision avec aucune autre plateforme, et si il y a collision, alors tester si cette autre plateforme est elle même en collision avec une autres etc. Et bien sur il faut que je test sa du coter gauche comme du coter droit de la plateforme ou ce trouve le joueur.. donc niveau optimisation j'aimerai me renseigner avant de coder quelque chose de fonctionnel ( si j'y arrive déjà.. ) mais pas du tout optimiser...

pour leur donner une id au plateforme différentes, j'ai lu que je pourrai faire quelque chose comme sa :

Code:
// J'initialise cette variable dés le debut
global.plateformeindex = 0;

Puis dans l'event create de mes plateformes je mettrai :

Code:
global.plateforme[global.plateformeindex] = id;
global.plateformeindex += 1;

Bon je n'es pas réellement trouver de solution encore, et j'essaye de me renseigner pour savoir ce qui serai le mieu et si possible le plus optimiser.
Si quelqu'un a une idée :/
Revenir en haut Aller en bas
Contenu sponsorisé





Différencier deux mêmes objets Empty
MessageSujet: Re: Différencier deux mêmes objets   Différencier deux mêmes objets Empty

Revenir en haut Aller en bas
 
Différencier deux mêmes objets
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» [Résolu] Plusieurs objets d'un objet en plusieurs objets
» Vie des objets
» Superposer les objets
» manette et objets...
» Placement de objets

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: