Malax Utilisateur confirmé: Rang **
Messages : 496 Localisation : Aix-en-Provence Projet Actuel : Lemmings Struggle (abandonné)
| Sujet: Utilisation de other [Résolu] Ven 5 Jan 2007 - 19:20 | |
| Bonsoir à tous, (assez technique) Je vais faire au mieux: Prenons une grille, il faudrait que je selectionne (mp_grid_add_cell en fait) une case objet si il y a, seulement sur les cases adjacentes (pas en diagonales), au moins deux autres cases objets. Cela se complique lorsque il faut faire intervenir une variable qu'on appellera move et doit etre égale à 0.Une première idée consisterait à utiliser ds_grid_create et faire ajouter "un" à toutes les adjacentes puis regarder celle dont la valeur est supérieur ou égale à deux mais cela ralentirait puisque le programme devrait tester toutes les cases (estimer à 256*256=65536 cases) Une seconde idée de créer un sprite(capteur) qui se positionne sur les quatres cases adjacentes et de compter le nombre de collision de l'objet courant avec le capteur. Appellons capt le capteur et obj l'objet: if(collision_point(x,y,capt,0,false)) Et maintenant comment dire le test d'une collision avec un autre capt ? avec other surement mais j'arrive po. surtout qu'il faudrait préciser que les deux capt ont la variable move=0. Voilou, j'ai mis les deux idées, histoire de comparer; merci d'avance
Dernière édition par le Sam 6 Jan 2007 - 13:08, édité 2 fois |
|
OKSYD Utilisateur confirmé: Rang *****
Messages : 2302 Localisation : Pioneer 2 Projet Actuel : Hard Pac III
| Sujet: Re: Utilisation de other [Résolu] Sam 6 Jan 2007 - 8:46 | |
| tu peux utiliser ça, mais c'est peut être un peu moins précis: - Citation :
- with(instance_nearest(x,y,capt))
{ tes actions... } Cette fonction retourne l'id de l'instance "capt" la plus proche de "x" et de "y" de ton objet. |
|
Malax Utilisateur confirmé: Rang **
Messages : 496 Localisation : Aix-en-Provence Projet Actuel : Lemmings Struggle (abandonné)
| Sujet: Re: Utilisation de other [Résolu] Sam 6 Jan 2007 - 11:21 | |
| Oui c'est une bonne idée à mon avis, je vais essayer |
|
Malax Utilisateur confirmé: Rang **
Messages : 496 Localisation : Aix-en-Provence Projet Actuel : Lemmings Struggle (abandonné)
| Sujet: Re: Utilisation de other [Résolu] Sam 6 Jan 2007 - 12:14 | |
| object6:capteur; object0:l'objet
- Code:
-
if(move=0) { id2=instance_create(x,y,object6); with(instance_nearest(x,y,object6)) { if(collision_point(other.x,other.y,object0,0,false)) { mp_grid_add_cell(global.grid,(x-18)/36,(y-18)/36); } } with id2 instance_destroy;
*** En testant, vu que chaque objet doit créer une instance capteur (pour ceux qui n'imagine pas super, c'est en forme de croix et cela déborde sur les cases de droite, gauche,haut et bas) je pense que instance_nearest selectionne celle qui est créée. En plus mon programme n'est pas correct, ya pas à dire c'est difficile. J'écris la traduction ligne par ligne si quelqu'un veut essayer de corriger :gniah:
- Code:
-
if(move=0) // ... { id2=instance_create(x,y,object6); // création du capteur with(instance_nearest(x,y,object6)) // on repére l'id du cap+proche { if(collision_point(other.x,other.y,object0,0,false)) //teste la collision avec un autre capteur mais object0 devrait etre l'instance courante ... en + du problème *** { mp_grid_add_cell(global.grid,(x-18)/36,(y-18)/36); //interdire grille } } with id2 instance_destroy; // détruire l'instance créée
:snif2:
Dernière édition par le Sam 6 Jan 2007 - 13:10, édité 1 fois |
|
Malax Utilisateur confirmé: Rang **
Messages : 496 Localisation : Aix-en-Provence Projet Actuel : Lemmings Struggle (abandonné)
| Sujet: Re: Utilisation de other [Résolu] Sam 6 Jan 2007 - 13:10 | |
| Aie en fait il n'est pas nécessaire de comparer toutes la grille vu que je peux sélectionné les cases ou il y a une chance avec ds_grid_get.... Merci quand meme OKSYD :pac_dr: :pac_dr: :pac_dr: |
|
Contenu sponsorisé
| Sujet: Re: Utilisation de other [Résolu] | |
| |
|