Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: Velgio en Abril 30, 2013, 01:54:07 AM

Título: Destruir objeto que sale de la view
Publicado por: Velgio en Abril 30, 2013, 01:54:07 AM
 :GM8:

Muy buenas y un saludo a todos. Llevo ya semanas leyendo el foro a raiz de empezar a usar Game Maker, aunque nunca antes había usado nada parecido ni tenía nociones de ello. Antes de postear aqui la duda estuve usando el buscador que teneis bien majo para ver si encontraba solución o alguna orientación sobre como resolver mi problema, sin conseguirlo.

Ando trasteando para ver si consigo hacer un matamarcianos que a la gente no le sangre los ojos demasiado por que es lo primero que intento hacer, eso si con mi mejor esfuerzo. Tengo un problema que seguramente sea facil de resolver de que quiero que cuando un objeto salga de la view sea destruido y no consigo sacar como podría ser el código. Pongo el último código que intente por decima vez y claramente Game Maker me indica que es incorrecto:

{
  instance_activate_object (Obj_bolaazul);
  instance_destroy_(Obj_bolaazul); (view_xview[0],view_yview[0],
                        view_wview[0],view_hview[0],false,true);
}

gracias de antemano. Me lei las reglas del foro antes de postear, espero que este todo correcto  :D
Título: Re:Destruir objeto que sale de la view
Publicado por: romon_28 en Abril 30, 2013, 04:26:55 PM
if (x+sprite_width-sprite_xoffset)<(view_xview)
|| (x-sprite_xoffset)>(view_xview+view_wview)
|| (y+sprite_height-sprite_yoffset)<(view_yview)
|| (y-sprite_yoffset)>(view_yview+view_hview)
{
image_blend=c_red
}
Título: Re:Destruir objeto que sale de la view
Publicado por: Velgio en Abril 30, 2013, 05:14:01 PM
Muchas gracias por contestar tan pronto romon_28:

he estado probando el código tal como los has escrito en un "execute code" en el mismo objeto que quiero destruir si sale de la view, tanto en un evento "create" como en un "step". El resultado es el mismo que sin el código salvo que el objeto al volver a entrar en la view a cambiado su color a rojo (supongo que por la orden "image_blend=c_red").

Probé a cambiar donde pone sprite por el nombre del objeto y por la palabra "object" (como no tengo ni idea de lenguaje Game Maker pues pruebo barbaridades como esas) y me da error al ocurrir el evento una vez en juego.

Creo que por la forma en la que estoy construyendo el juego seguramente el código no haga efecto o yo este haciendo algo mal a la hora de implantar este código, no lo se. Por otro lado para facilitaros la dificil tarea de ayudar a gente como yo que no tiene ni idea pongo el código que tengo implantado para desactivar objetos cuando salen de la view, a ver si por este código se esta creando un conflicto o yo que se:

{
  instance_activate_all();
  instance_deactivate_region(view_xview[0],view_yview[0],
                        view_wview[0],view_hview[0],false,true);
}

gracias de nuevo por el tiempo invertido en ayudar. Si necesitan que aporte mas información solo comentenlo.
Título: Re:Destruir objeto que sale de la view
Publicado por: brunoxzx en Mayo 01, 2013, 07:10:53 AM
El código de romon solo era un ejemplo xD, solo cambia el image_blend por instance_destroy().
[gml]if (x+sprite_width-sprite_xoffset)<(view_xview)
|| (x-sprite_xoffset)>(view_xview+view_wview)
|| (y+sprite_height-sprite_yoffset)<(view_yview)
|| (y-sprite_yoffset)>(view_yview+view_hview)
{
instance_destroy();
}[/gml]
:-[
También hay un evento que se llama "outside view" o algo así, solo pones allí el código para destruir.

Por cierto lo que haces de desactivar las instancias fuera de la view sí podría causar problemas, depende de que tipos de step estés usando. Aunque parece que todo va bien ya que dices que el objeto sí se pone rojo al salir de la view. De todos modos te recomiendo que si vas a desactivar objetos no lo hagas apenas salen de la view dale un poco más de distancia.
Título: Re:Destruir objeto que sale de la view
Publicado por: romon_28 en Mayo 01, 2013, 06:13:56 PM
Algo asi?

if point_distance(x,y,view_xview,view_yview) > (view_wview+view_hview)
{
instance_deactivate_object(id);
}

o asi?

if (x+sprite_width-sprite_xoffset)<(view_xview-Distancia)
|| (x-sprite_xoffset)>(view_xview+view_wview+Distancia)
|| (y+sprite_height-sprite_yoffset)<(view_yview-Distancia)
|| (y-sprite_yoffset)>(view_yview+view_hview+Distancia)
{
instance_deactivate_object(id);
}
Título: Re:Destruir objeto que sale de la view
Publicado por: Velgio en Mayo 01, 2013, 08:58:02 PM
MUCHISIMAS GRACIAS!!  :D Todo resuelto.