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 ^^


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..

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..
Cita de: CGM 2008CGM: Un poco mas serios, mejores Juegos.
Bienvenid@ a CGM. Recomenzamos desde cero, con un reglamento mas estricto, mejor definido y con mas ganas que nunca de hacer juegos con calidad comercial. El que avisa no es traidor: Leete las reglas si no quieres llevarte un capon makero.
Mercilessly!!
Plug-In para animaciones: http://ciberman.net/tweenline/

#4 Julio 31, 2011, 06:19:43 PM Ultima modificación: Julio 31, 2011, 06:23:52 PM por MaanuRP
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 :/

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.