Hola gente. Vieron que hay juegos en donde en donde hay áreas ocultas y si uno lo descubre como que un muro se vuelve invisible mientras el jugador esta posicionado en el lugar descubierto? Bueno, quise hacer algo parecido con este código en el evento step del objeto muro oculto.

if place_meeting(x,y,oPlayer) //Si el jugador esta colisionando sobre el objeto muro entonces se vuelve invisible
{
visible=false
//image_alpha=0
}

else //caso contrario se vuelve visible
{
visible=true
//image_alpha=1
}

Bueno, el código funciona, solo que yo quiero que se vuelvan invisible todos los objetos llamado obj_muro_oculto y de la forma en la que estoy haciéndolo solo se aplica al objeto sobre el que estoy colisionando en cuestión. ¿Alguna idea?

Para que se entienda mejor dejo esta imagen. Como ven, sería un lio si cada área secreta la hago con un solo objeto, por eso más fácil es hacer un objeto 32x32 e ir armando el área. Pero como mencione antes, se aplica solo a un objeto y no a todos.


#1 Marzo 26, 2015, 05:34:43 PM Ultima modificación: Marzo 26, 2015, 05:48:34 PM por penumbra
Una opción es usar un parent que agrupe a todos los objetos a los que quieres aplicar ese código.

Otra opción es usar la construcción with(), si es que se trata siempre del mismo objeto en distintas habitaciones.

También se podría hacer que el objeto oculto revise a qué distancia está el jugador de él. SI está lejos, que pase una cosa, y si está cerca, que ocurra otra, sin que sea estrictamente necesario calcular una colisión


El codigo deberia ir en el event End step del oPlayer
y cambia un poco el codigo por este.

if place_meeting(x,y,obj_muro_oculto)
{
obj_muro_oculto.visible=false
}

else
{
obj_muro_oculto.visible=true
}
Atentamente.-
Elvis Kelley
Mi Manual.
Mi canal de Youtube Youtube click aqui
Video tutoriales Game maker

if(ver == false)
{
    obj_muro.sprite_index = spr_muro;
} else {
    obj_muro.sprite_index = noone;
}

if(keyboard_check(vk_space))
{
   
    ver = true
}
else
{
    ver = false;
}

Como dice @penumbra, tal vez funcione agregandole la sentencia with():


with (obj_muro_oculto)
{
if place_meeting(x,y,oPlayer)
{
visible=false
//image_alpha=0
}

else //caso contrario se vuelve visible
{
visible=true
//image_alpha=1
}
}

Qures hacer algo com la imagen de abajo ?