Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: Hymake en Julio 31, 2011, 01:06:10 PM

Título: ?C?mo saber si un objeto se ve en pantalla?
Publicado por: Hymake en Julio 31, 2011, 01:06:10 PM
Muy buenas a todos,

Estoy desarrollando un juego de plataformas en el que el protagonista puede lanzar y arrojar cosas para hacer da?o a los enemigos. Ahora bien: el problema es que si disparo desde un lado de la sala, puede golpear perfectamente a un enemigo que est? en la otra punta de la sala, aunque yo no le vea, y eso no me interesa. As? que he aqu? mi duda:

?Es posible saber si un objeto se ve actualmente en pantalla? Si la respuesta es s?, ?c?mo?

Much?simas gracias ^^
Título: Re: ?C?mo saber si un objeto se ve en pantalla?
Publicado por: juan pablo en Julio 31, 2011, 02:57:25 PM
si se ven
y si quieres verlos usa un minimapa
ejemplo:
http://www.comunidadgm.org/index.php?page=verdescargas&accion=descargaD&download_id=1530 (http://www.comunidadgm.org/index.php?page=verdescargas&accion=descargaD&download_id=1530)
Título: Re: ?C?mo saber si un objeto se ve en pantalla?
Publicado por: sbs91 en Julio 31, 2011, 05:23:19 PM
Si, pero es algo complejo
Para lo que buscas creo que te sera mas facil otra cosa. SI la bala esta tanto lejos del jugador, que entonces se destruya

Algo asi:
if (instance_exists(player)) {
 if (distance_to_object(player)>320) {instance_destroy()}
}
eso en el step de la bala y pon la distancia segun el tama?o de la view..
Título: Re: ?C?mo saber si un objeto se ve en pantalla?
Publicado por: Ciberman en Julio 31, 2011, 06:01:27 PM
o podes elejir desactivar las instancias que estan fuera de la view (o borrarlas)

leete esta parte del manual:
http://www.comunidadgm.org/manual_GM/Desactivando_instancias.htm
sirve tambien para gm8 y 8.1 ya que no cambi? en nada..
Título: Re: ?C?mo saber si un objeto se ve en pantalla?
Publicado por: MaanuRP en Julio 31, 2011, 06:19:43 PM
Cita de: Manual Game Maker
Por ejemplo, para desactivar todas las instancias fuera de la vista y activar las que est?n dentro podemos poner este c?digo en el evento step del personaje del jugador:

{

 instance_activate_all();

 instance_deactivate_region(view_xview[0],view_yview[0],

                       view_wview[0],view_hview[0],false,true);

}


Normalmente es mejor usar una regi?n ligeramente mayor que la vista.


PD: Que alguien me diga como cambiar el tama?o y demas cosas dentro de la caja de codigo que no me funciona con las opciones del BBCode :/
Título: Re: ?C?mo saber si un objeto se ve en pantalla?
Publicado por: Zigma en Agosto 01, 2011, 05:28:00 AM
MMmm. .   el codigo del post anterior es bueno si quieres desactivar los objetos que esten fuera, pero los objetos seguiran ahi. . .   

Si usas ese codigo, cuando la bala salga de la pantalla, se desactivara. .  si en algun momento entra a pantalla, volvera a estar activa y quizas esto no te convenga.

Otra alternativa es, utilizando mas o menos la misma idea, utilizar view_xview, view_yview, view_wview y view_hview  para determinar los limites de la pantalla y establecer en el step del objeto bala algo asi:

if (x < view_xview[0]) or (x > view_xview[0]+view_wview[0]){
    instance_destroy();
}

Lo anterior para destruir el objeto si sale de pantalla por los limites horizontales.   Puedes agregar los otros dos parametros para los limites verticales.
Título: Re: ?C?mo saber si un objeto se ve en pantalla?
Publicado por: Hymake en Agosto 06, 2011, 12:13:28 PM
Muchas gracias por las respuestas! :D