AccueilAccueil  FAQFAQ  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  Connexion  
Le Deal du moment : -21%
LEGO® Icons 10329 Les Plantes Miniatures, ...
Voir le deal
39.59 €

 

 trouver le plus proche tout objet confondu

Aller en bas 
4 participants
AuteurMessage
gaeris
Pas mal



Messages : 35
Localisation : à [Nom de village imprononçable]

trouver le plus proche tout objet confondu Empty
MessageSujet: trouver le plus proche tout objet confondu   trouver le plus proche tout objet confondu EmptyMer 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 sweat 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.
Revenir en haut Aller en bas
M@d_Doc
Modérateur
M@d_Doc


Messages : 6600
Localisation : 47°44'8.04
Projet Actuel : aucun

trouver le plus proche tout objet confondu Empty
MessageSujet: Re: trouver le plus proche tout objet confondu   trouver le plus proche tout objet confondu EmptyMer 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.

_________________
trouver le plus proche tout objet confondu Control-commentTous les icones de gm utilisables sur le cbna ICI  trouver le plus proche tout objet confondu Main1-change-sprite
Revenir en haut Aller en bas
http://www.lecbna.org
gaeris
Pas mal



Messages : 35
Localisation : à [Nom de village imprononçable]

trouver le plus proche tout objet confondu Empty
MessageSujet: Re: trouver le plus proche tout objet confondu   trouver le plus proche tout objet confondu EmptyMer 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 ?
Revenir en haut Aller en bas
M@d_Doc
Modérateur
M@d_Doc


Messages : 6600
Localisation : 47°44'8.04
Projet Actuel : aucun

trouver le plus proche tout objet confondu Empty
MessageSujet: Re: trouver le plus proche tout objet confondu   trouver le plus proche tout objet confondu EmptyJeu 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...


_________________
trouver le plus proche tout objet confondu Control-commentTous les icones de gm utilisables sur le cbna ICI  trouver le plus proche tout objet confondu Main1-change-sprite
Revenir en haut Aller en bas
http://www.lecbna.org
gaeris
Pas mal



Messages : 35
Localisation : à [Nom de village imprononçable]

trouver le plus proche tout objet confondu Empty
MessageSujet: Re: trouver le plus proche tout objet confondu   trouver le plus proche tout objet confondu EmptyJeu 19 Juil 2012 - 11:34

Ok merci beaucoup happy1
Revenir en haut Aller en bas
arthuro
Utilisateur confirmé: Rang ****
arthuro


Messages : 1483
Localisation : Paris
Projet Actuel : Diagon https://arthursonzogni.com/Diagon

trouver le plus proche tout objet confondu Empty
MessageSujet: Re: trouver le plus proche tout objet confondu   trouver le plus proche tout objet confondu EmptyJeu 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)

_________________
trouver le plus proche tout objet confondu Pochettetrouver le plus proche tout objet confondu Signature.php?gid=588
D'autres jeux :
In The Cube
In the cube 2
Revenir en haut Aller en bas
Térence
Utilisateur confirmé: Rang *****
Térence


Messages : 2213
Localisation : Oui

trouver le plus proche tout objet confondu Empty
MessageSujet: Re: trouver le plus proche tout objet confondu   trouver le plus proche tout objet confondu EmptyVen 20 Juil 2012 - 13:02

Avec les objets parents ca marche, j'avais déjà essayé.
Revenir en haut Aller en bas
Contenu sponsorisé





trouver le plus proche tout objet confondu Empty
MessageSujet: Re: trouver le plus proche tout objet confondu   trouver le plus proche tout objet confondu Empty

Revenir en haut Aller en bas
 
trouver le plus proche tout objet confondu
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» L'objet après le plus proche
» Avoir l'ID de l'objet proche
» suivre l'objet le plus proche qui est le même
» [Résolu] L'id de l'objet le plus proche parmi une liste
» Comment repérer l'objet le plus proche d'un autre ?

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: