About Taringa!

Popular channels

GameMaker Somras con movimiento en 1ª sola linea de codigo

Hola, ¿Cómo Están?

Bueno Hace un rato que estuve intentando dibujar la sombra para una roca, y quería que esta se vea en diagonal y un poco alargada. así que lo pude hacer y me di cuenta de que quedaría bueno en
los personajes con movimiento. Por lo que se los voy a Compartir y se los explico.



Primero dibujamos la parte que será la sombra
draw_sprite_ext(sprite_index,image_index,x+8,y+22,image_xscale-.1,image_yscale+.5,-145,c_black,0.1);

Este código, sin adaptar los valores a lo que necesitamos, sería:


draw_sprite_ext(sprite_index,image_index,x,y,image_xscale,image_yscale,image_angle,
image_color,image_alpha)

Luego dibujamos al sprite principal;

draw_self() en caso de game maker studio
y
draw_sprite(sprite_index,image_index,x,y)
para game maker 8.1 y posteriores

el orden es importante, porque si dibujamos primero el sprite principal y luego la sombra, la sombrea se dibujará encima del sprite principal y no tendría sentido

Bueno ahora esto lo deben adaptar a cada sprite según su tamaño, según su origen (x e y) según si queremos que se vea en diagonal y hacia qué lado y fijarnos si queda mejor algo alargado o del tamaño original.
Esto cambia con cada objeto. En mi caso, por ejemplo, la sombra de los arboles la hice del mismo tamaño, mientras que la de la roca gigante la hice con él image_yscale+0.5 y el mage_xscale-0.1



sprite_index=sprite que asignamos al objeto;

image_index=sub_imagen que se dibuja
( poner solo image_index para que cambie en caso de usar sprites con movimiento)

x he y son los orígenes del sprite ( fijarse si está centrado etc... )

image_xscale=el tamaño x del sprite
( en este ejemplo use un image_xscale-0.1 para que reduzca muy poquito )

image_yscale=el tamaño y del sprite
( en este ejemplo use image_yscale+0.5 para que de un aspecto alargado )

image_angel=rotación de la imagen ( se mide por grados );

( en este ejemplo use -145º para que se incline un poco hacia la derecha que junto con image_yscale+0.5 da la impresión que la luz le pega desde arriba, a la izquierda
Puse -145º en lugar de 145º porque calcule mal y se me dibujo pal otro lado, y no quería estar probando. )

image_color=color de la imagen( Usen Negro porque si no se ve algo raro prueben y se darán cuenta)

image_alpha=opacidad de la imagen ( Use 0.1 para que sea bastante trasparente )

Este es un Video con el resultado Final. Véanlo en HD para ver bien las sombras y como cambia según los movimientos del personaje


link: https://www.youtube.com/watch?v=gs2zGXZ40U8

Si prestan atención en las rocas pequeñas la sombra quedo mal. eso se puede arreglar cambiando el origen x y el origen y donde se dibuja la sombra , con image_xscale reduciendo el tamaño o cambiando un poco la rotación; Según lo que quieran .

Bueno espero que les sea útil. Quizás no sea la mejor manera de hacerlo y si alguien tiene, sabe o encuentra una forma mejor por favor compártala, ya que las sombras son un lindo efecto grafico en los juegos

Saludos
3Comments