Julio 14, 2018, 06:47:25 PM Ultima modificación: Julio 15, 2018, 08:01:47 PM por Marth
Veran, tengo este código con el que creo un Grid:

global.mapa = mp_grid_create(0,0,room_width/casilla,room_height/casilla,casilla,casilla)
mp_grid_add_instances(global.mapa,Muro,false)
mp_grid_add_instances(global.mapa,Meta,true)


Ahora digamos que creo un objeto al cual al crearlo le pongo este código:

if(!place_empty(x,y)) instance_destroy()

Esto hace que si la posición que tenia al crearlo choca con Muro o Meta se autodestruira. Pero digamos por ejemplo que destrullo todos los Muro pero no elimino las cuadriculas del grid.
Pues se crea el objeto, no se destruye al no encontrar nada, pero al estar en una casilla "llena", tiene dificultades para desplazarse, ya que usa un sistema de path que aprovecha ese grid.
Tengo que hacer que en vez de comprobar si choca con otro objeto, choca con un grid. ¿Cómo se hace?

Busca en la AYUDA la funcion mp_grid_get_cell, viene con un ejemplo que es lo que necesitas.

Cita de: 3dgeminis en Julio 14, 2018, 11:47:46 PM
Busca en la AYUDA la funcion mp_grid_get_cell, viene con un ejemplo que es lo que necesitas.

Siguiendo tu consejo, en el evento de creación ahora tengo esto:

if(!compruebo()) instance_destroy()

Siendo el script "compruebo" el siguiente código:

for(global.a=bbox_left; global.a<=bbox_right; global.a++)
   for(global.b=bbox_top; global.b<=bbox_bottom; global.b++)
      if(mp_grid_get_cell(global.mapa,floor(global.a/casilla),floor(global.b/casilla))==-1)
         return false
return true

No pude hacerlo funcionar usando un script, pero si coloco el codigo directamente en el objeto funciona
[gml]
if mp_grid_get_cell(global.mapa, x div casilla, y div casilla)==-1 {instance_destroy()}
[/gml]