Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: dokii en Julio 22, 2015, 04:27:40 PM

Título: Crear objetos a cierta distacia del personaje
Publicado por: dokii en Julio 22, 2015, 04:27:40 PM
Hola!!! tengo una duda.

Como puedo hacer que los objetos del juego se vayan creando si el personaje pasa cerca de ellos (a un cierta distancia) y si se aleja de nuevo se vuelvan a borrar??
Es que al exportar mi juego a html5 se ve lento y supongo que es porque hay varios objetos en la room..

Gracias!!!!
Título: Re:Crear objetos a cierta distacia del personaje
Publicado por: Iros en Julio 22, 2015, 06:28:19 PM
Podes usar la función "distance_to_object();" quedándote algo más o menos así:

[gml]
if (distance_to_object(objPlayer) > 50) { //Si la distancia entre el objeto y el personaje es mayor a 50 pixeles.
   instance_deactivate_object(this); //Se desactiva el objeto.
} else { //De lo contrario, si la distancia entre el objeto y el personaje es menor a 50 pixeles.
   instance_activate_object(this); //activamos el objeto.
}
[/gml]

No te conviene borrar y crear ya que bajaría el performance, te conviene más activar y desactivar las instancias ya que de esta forma se consume menos memoria.
Título: Re:Crear objetos a cierta distacia del personaje
Publicado por: Guacusio en Julio 22, 2015, 07:50:56 PM
Cita de: Iros en Julio 22, 2015, 06:28:19 PM
Podes usar la función "distance_to_object();" quedándote algo más o menos así:

[gml]
if (distance_to_object(objPlayer) > 50) { //Si la distancia entre el objeto y el personaje es mayor a 50 pixeles.
   instance_deactivate_object(this); //Se desactiva el objeto.
} else { //De lo contrario, si la distancia entre el objeto y el personaje es menor a 50 pixeles.
   instance_activate_object(this); //activamos el objeto.
}
[/gml]

No te conviene borrar y crear ya que bajaría el performance, te conviene más activar y desactivar las instancias ya que de esta forma se consume menos memoria.

Desactivar las instancias que no interesa que interactúen en el juego es una buena forma de hacerlo, pero hay que tener cuidado con el hecho de que una instancia desactivada no puede reactivarse a sí misma. Para evitar esto puedes poner esto en una alarma del personaje para que se ejecute cada cierto número de steps a tu gusto:

instance_deactivate_all(true);//desactiva todas las instancias excepto el jugador
instance_activate_region(x-a,y-a,2*a,2*a,true);//activa las instancias en un cuadrado de lado "a" en torno al jugador


Si quieres ocultar sólo cierto tipo de instancias y en un radio del jugador en vez de en un cuadrado, puedes usar esto:

instance_activate_all();//activa todas las instancias
with tipo
{
if distance_to_object(other)>d
instance_deactivate_object(id);//desactiva las instancias del objeto "tipo" que distan más de "d" del jugador
}

Título: Re:Crear objetos a cierta distacia del personaje
Publicado por: dokii en Julio 23, 2015, 03:58:55 PM
Mil gracias si me funciono :D