| trouver le plus proche tout objet confondu | |
|
|
Auteur | Message |
---|
gaeris Pas mal
Messages : 35 Localisation : à [Nom de village imprononçable]
| Sujet: trouver le plus proche tout objet confondu Mer 18 Juil 2012 - 20:37 | |
| Bonsoir je cherche à trouver l'instance la plus proche parmi plusieurs objets, voici mon code : - Code:
-
//choix cible if instance_number(obj1) > 0 obj1_ = instance_nearest(x,y,obj1) if instance_number(obj2) > 0 obj2_ = instance_nearest(x,y,obj2)
if instance_number(obj2) > 0 if instance_number(obj1) > 0 { if point_distance(x,y,obj1_.x,obj1_.y) < point_distance(x,y,obj2_.x,obj2_.y) cible = instance_nearest(x,y,obj1) else cible = instance_nearest(x,y,obj2) } if instance_number(obj1) = 0 cible = instance_nearest(x,y,obj2) else cible = instance_nearest(x,y,obj1)
if instance_number(obj1) = 0 if instance_number(obj2) = 0 cible_trouvee = false Je sais que c'est pas optimisé du tout mais le problème, c'est que je n'arrive qu'a prendre en compte 2 objets et je voudrais trouver le plus proche entre 4 ou 5 objets, je pense que le code serait extrêmement long si je continu comme ça. |
|
| |
M@d_Doc Modérateur
Messages : 6600 Localisation : 47°44'8.04 Projet Actuel : aucun
| Sujet: Re: trouver le plus proche tout objet confondu Mer 18 Juil 2012 - 21:51 | |
| Niveau optimisation, ce sera pas fantastique, mais voilà une idée: - Code:
-
idProche = -1; distanceMini = 50000; with(all) { dist = point_distance(x,y,other.x,other.y); if (dist<distanceMini)&& (id!=other.id) { other.idProche = id; other.distanceMini = dist; } } A la fin, tu auras dans 'distanceMini' la distance, et dans 'idProche' l'identifiant de l'instance la plus proche de l'objet executant le code, en prenant en compte tous les objets/instances. _________________ Tous les icones de gm utilisables sur le cbna ICI |
|
| |
gaeris Pas mal
Messages : 35 Localisation : à [Nom de village imprononçable]
| Sujet: Re: trouver le plus proche tout objet confondu Mer 18 Juil 2012 - 22:22 | |
| Merci M@d_Doc, mais comment fait-on si on ne veut que prendre en compte les objets nommés dans le code ? |
|
| |
M@d_Doc Modérateur
Messages : 6600 Localisation : 47°44'8.04 Projet Actuel : aucun
| Sujet: Re: trouver le plus proche tout objet confondu Jeu 19 Juil 2012 - 9:46 | |
| - Code:
-
idProche = noone; dist = 50000; obj = instance_nearest(x,y,obj1); if (obj!=noone) { idProche = obj; dist = point_distance(x,y,obj.x,obj.y); }
//COMMENTAIRE INUTILE obj = instance_nearest(x,y,obj2); if (obj!=noone) { dist2 = point_distance(x,y,obj.x,obj.y); if (dist2<dist) { idProche = obj; dist = dist2; } } Si il n'y a ni obj1 ni obj2 présent, idProche reste à noone (-4). Sinon, tu récupères l'objet le plus proche dans obj, et la distance de ce dernier dans dist. Si tu veux rajouter un troisième objet, il suffit de dupliquer le code sous le commentaire inutile en changeant obj2 par obj3, etc... _________________ Tous les icones de gm utilisables sur le cbna ICI |
|
| |
gaeris Pas mal
Messages : 35 Localisation : à [Nom de village imprononçable]
| Sujet: Re: trouver le plus proche tout objet confondu Jeu 19 Juil 2012 - 11:34 | |
| Ok merci beaucoup |
|
| |
arthuro Utilisateur confirmé: Rang ****
Messages : 1483 Localisation : Paris Projet Actuel : Diagon https://arthursonzogni.com/Diagon
| Sujet: Re: trouver le plus proche tout objet confondu Jeu 19 Juil 2012 - 13:57 | |
| Si tu veux pas t' embêter:
pour chercher le plus proche de tout les objets, tu peux sélectionner all Genre: instance_nearest(x,y,all)
Si tu veux que plusieurs objets mais pas tous, tu peux faire un objet: objParent, parents de ces objets et faire:
instance_nearest(x,y,objParent)
(J'ai jamais testé, ça peux ne pas marcher, mais normalement ça devrait être bon) |
|
| |
Térence Utilisateur confirmé: Rang *****
Messages : 2213 Localisation : Oui
| Sujet: Re: trouver le plus proche tout objet confondu Ven 20 Juil 2012 - 13:02 | |
| Avec les objets parents ca marche, j'avais déjà essayé. |
|
| |
Contenu sponsorisé
| Sujet: Re: trouver le plus proche tout objet confondu | |
| |
|
| |
| trouver le plus proche tout objet confondu | |
|