Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: mamaffia en Octubre 07, 2014, 10:07:48 PM

Título: Sombra de todas las instancias, solo dibuja una. Ayuda - RESUELTO
Publicado por: mamaffia en Octubre 07, 2014, 10:07:48 PM
Hola a todos, estoy teniendo un pequeño problema que hasta el momento no encuentro la solución. El tema es así, tengo muchas instancias de un objeto en una room y lo que quiero hacer es dibujar la sombra, el método ya sabemos que cada uno se la ingenia para hacerlo pero mi problema es que estoy usando draw_sprite_ext en el evento draw de ese objeto y solo se dibuja en un objeto por vez, cuando este es destruido se dibuja en otro, pero no sé como hacer para que se dibuje en todos, lo único que hago es dibujar el sprite de sombra a la altura del piso moviéndolo en la x del objeto, si alguien sabe como hacerlo se lo voy a agradecer, mientras sigo intentando. Saludos
Título: Re:Sombra de todas las instancias, solo dibuja una. Ayuda
Publicado por: penumbra en Octubre 07, 2014, 10:12:42 PM
¿Puedes poner el código que estás usando en el evento DRAW? No entiendo a que te refieres con un objeto por vez. ¿A qué le llamas vez?
Título: Re:Sombra de todas las instancias, solo dibuja una. Ayuda
Publicado por: mamaffia en Octubre 07, 2014, 10:24:04 PM
draw_sprite_ext(spr_sombrapelota, 0,obj_balon.x,452,1,1,0,c_black,0.5)

Eso lo pongo en el evento DRAW de la pelota, calculo que ahí estará el problema no? tal vez creando otro objeto que se encargue de esto.

Con respecto a una por vez me refiero a lo siguiente, supongamos, en la room hay 5 pelotas y se destruyen al colisionar con un objeto, con mi código una de ellas tiene sombra, si se destruye la que tiene la sombra automáticamente otra aparece con sombra, sea cual sea la cantidad de pelotas siempre hay una sola sombra.
Título: Re:Sombra de todas las instancias, solo dibuja una. Ayuda
Publicado por: penumbra en Octubre 07, 2014, 10:27:58 PM
Ah bueno. El problema es que en la función draw_sprite_ext() estás usando UNA SOLA posición para dibujar las sombras (obj_balon.x,452). Internamente, GM está tomando la posición de la primer instancia del objeto balón (aunque haya más), por lo que efectivamente, se dibujan 5 sombras, pero todas en la misma posición, lo que hace que parezca que sólo hay una.

Hay distintas maneras de solucionarlo, por ejemplo, dibujar desde un controlador las sombras

with(obj_balon)
{
     //código para dibujar la sombra
}
Título: Re:Sombra de todas las instancias, solo dibuja una. Ayuda
Publicado por: TheSandBoxMKG en Octubre 07, 2014, 10:29:45 PM
Así debería ser:
[gml]with(inst){
   draw_sprite_ext(spr_inst,-1,x-16,y+16,1,1,0,c_black,0.6)
}[/gml]

Y no así:
[gml]draw_sprite_ext(spr_inst,-1,inst.x-16,inst.y+16,1,0,c_black,0.6)[/gml]


Aqui tienes una mejor opción:
[gml]with(inst){
   draw_sprite_ext(sprite_index,image_index,x-16,y+16,image_xscale,image_yscale,image_angle,c_black,image_alpha*0.6)
}[/gml]
Título: Re:Sombra de todas las instancias, solo dibuja una. Ayuda
Publicado por: mamaffia en Octubre 07, 2014, 10:43:05 PM
Ahora siii, por fin, llevo varias horas con esto, gracias amigos, usé el with como me dijeron y cambié el obj_pelota.x por x para lograr exactamente lo que quería. El código quedó así:

with (obj_balon){
draw_sprite_ext(spr_sombrapelota, 0,x,452,1,1,0,c_black,0.5)
}


Muchas gracias!