Dibujando sprites y fondos

Normalmente los objetos tienen un sprite asociado que se dibuja en la pantalla. Pero también puedes usar el evento draw. para dibujar otras cosas. Esta sección y las dos siguientes te darán información sobre este aspecto. Primero de todo, hay un grupo de funciones que sirven para dibujar sprites y fondos de distintas maneras. Estas funciones te dan un gran control sobre la apariencia gráfica del juego y te permiten hacer cosas como dibujar sólo un trozo de un fondo, rotar un sprite...

draw_sprite(sprite,subimg,x,y) Dibuja la subimagen subimg (-1 = subimagen actual) del sprite con índice sprite con su origen en la posición (x,y) sin teñirlo de ningún color y sin usar transparencia.
draw_sprite_stretched(sprite,subimg,x,y,w,h) Dibuja la subimagen subimg del sprite con índice sprite de forma que llene la región con esquina superior-izquierda en (x,y), anchura w y altura h.
draw_sprite_tiled(sprite,subimg,x,y) Dibuja el sprite repitiéndolo horizontal y verticalmente de forma que llene toda la pantalla. (x,y) es la posición donde se dibuja una de las copias del sprite.
draw_sprite_part(sprite,subimg,left,top,width,height,x,y) Dibuja la parte del sprite indicada con su esquina superior izquierda en (x,y). La parte del sprite que queremos dibujar se indica con left y top (coordenadas de la esquina superior-izquierda) y width y height (anchura y altura del trozo que queremos dibujar).

draw_background(back,x,y) Dibuja el fondo en la posición (x,y), sin teñirlo de ningún color y sin transparencia.
draw_background_stretched(back,x,y,w,h) Dibuja el fondo escalado de forma que ocupe la región indicada.
draw_background_tiled(back,x,y) Dibuja el fondo repitiéndolo en horizontal y vertical de forma que llene toda la pantalla.
draw_background_part(back,left,top,width,height,x,y) Dibuja el trozo indicado del fondo con su esquina superior-izquierda en la posición (x,y).

 

Las funciones siguientes son versiones extendidas de las funciones anteriores. Estas funciones sólo están disponibles en la versión registrada de Game Maker.

draw_sprite_ext(sprite,subimg,x,y,xscale,yscale,rot,color,alpha) Dibuja el sprite escalado con factores xscale (horizontal) e yscale (vertical) y rotado rot grados en sentido antihorario. color indica el color con el que queremos teñir el sprite (usa el color blanco c_white si no quieres teñir el sprite de ningún color) y alpha indica el factor de transparencia. Un valor igual a 0 hace la imagen totalmente transparente y un valor igual a 1 la hace totalmente opaca. Con valores intermedios conseguirás que la imagen sea parcialmente transparente. Con esta función se pueden crear efectos muy espectaculares como explosiones semi-transparentes.
draw_sprite_stretched_ext(sprite,subimg,x,y,w,h,color,alpha) Dibuja el sprite escalado de forma que ocupe la región indicada: esquina superior izquierda en (x,y), anchura w y altura h. color indica el color de teñido y alpha el factor de transparencia.
draw_sprite_tiled_ext(sprite,subimg,x,y,xscale,yscale,color,alpha) Dibuja el sprite repetido de forma que cubra toda la pantalla con factores de escala, color de teñido y factor de transparencia.
draw_sprite_part_ext(sprite,subimg,left,top,width,height,x,y,xscale,yscale,color,alpha) Dibuja la parte indicada del sprite con factores de escala, color de teñido y factor de transparencia.
draw_sprite_general(sprite,subimg,left,top,width,height,x,y,xscale,yscale,rot,c1,c2,c3,c4,alpha) La función más general para dibujar sprites. Dibuja la parte indicada de la subimagen subimg (-1 = subimagen actual) del sprite con índice sprite situando su esquina superior-izquierda en la posición (x,y) y con factores de escala, ángulo de rotación, un color de teñido para cada una de las 4 esquinas del sprite (en el orden arriba-izquierda, arriba-derecha, abajo-derecha y abajo-izquierda) y un factor de transparencia. Observa que el sprite se rotará sobre su esquina superior-izquierda y no sobre su origen.

draw_background_ext(back,x,y,xscale,yscale,rot,color,alpha) Dibuja el fondo escalado, rotado, teñido del color especificado (usa c_white si no quieres teñirlo) y con factor de transparencia alpha (0-1).
draw_background_stretched_ext(back,x,y,w,h,color,alpha) Dibuja el fondo escalado de forma que ocupe la región indicada con color de teñido y factor de transparencia.
draw_background_tiled_ext(back,x,y,xscale,yscale,color,alpha) Dibuja el fondo repetido de forma que ocupe todo el cuarto con factores de escala, color de teñido y factor de transparencia.
draw_background_part_ext(back,left,top,width,height,x,y,xscale,yscale,color,alpha) Dibuja la parte indicada del fondo situando su esquina superior-izquierda en la posición (x,y) con factores de escala, color de teñido y factor de transparencia.
draw_background_general(back,left,top,width,height,x,y,xscale,yscale,rot,c1,c2,c3,c4,alpha) La función más general para dibujar fondos. Dibuja la parte indicada del fondo situando su esquina superior-izquierda en la posición (x,y) con factores de escala, ángulo de rotación, un color de teñido para cada una de las cuatro esquinas (en el orden arriba-izquierda, arriba-derecha, abajo-derecha y abajo-izquierda) y un factor de transparencia. Observa que el sprite se rotará sobre su esquina superior-izquierda del trozo indicado del fondo.