5. Uso de sprites En este tutorial aprenderemos a crear y usar los sprites para palib. Quizas os resulte mas sencillo que los otros
5.1 Definicion de sprite
Los sprites son imagenes de un tamaño pequeño que se utilizan en la progamacion. Muy frecuentemente suelen estar animadas
Aqui pongo algunos sprites para que os hagais la idea:
El primer sprite que he puesto es bastante simple. Un simple iconito sin complicacion
El segundo sprite en cambio, esta animado,. Es decir tiene movimiento (representa una explosion)
Bien, supongo que os habreis fijado en una cosa, y es que el fondo de los sprites... Es de color rosa!
La explicacion es muy sencilla, abrimos el pagfx y miramos por esta zona
Pone que el transparent col es el color de antes (se llama magenta por cierto). Eso quiere decir que al transformar la imagen, el color magenta no se tendra en cuenta y se tomara como un hueco vacio
Por lo que si insertarmos el sprite, en el juego aparecera asi:
Tiene su logica no?, esto tambien se cumple en los fondos por cierto
Bien, ya vamos terminando esta parte, lo unico que me falta es indicar los tamaños que pueden ser. Son cualquiera de estos tamaños a lo alto y ancho:
5.2 Carga de sprites Ahora que sabemos lo que son, vamos a aprender a usarlos
Usaremos este sprite:
Lo metemos en la carpeta del pagfx, abrimos el pagfx y lo metemos
El modo lo vamos a dejar en 256 colores. En el nombre de la paleta pondremos uno facil (despues dire para que sirve). Convertimos el sprite y pasamos los archivos a la carpeta gfx que crearemos ahora
Bien, supongo que sabras que para cargar texto en la nds, primero hay que preparar la ds para utilizarlo escribiendo PA_InitText
Con los sprites pasa algo similar, pero aqui los sprites se agrupan en unas paletas. Podremos cargar y preparar los sprites de una paleta para usarlos. Pero entonces no los sprites que tengamos en otras paletas no podremos usarlos (habria que cargar dicha paleta entonces)
Bien, pos para cargar una paleta se usa:
PA_LoadSpritePal(0, // Pantalla
0, // Asignale un numero a la paleta
(void*)sprite0_Pal); // Nombre de la paleta que le pusistes
Bien, pos luego para crear el sprite se usa:
PA_CreateSprite(0, // Pantalla
0, // Asignale un numero al sprite
(void*)Mouse_Sprite, // Nombre de sprite
OBJ_SIZE_32X32, // Tamaño de sprite, en este caso es 32x32 asi que pondremos ese valor
1, // Modo de 256 colores, los demas modos no los vamos a ver aun
0, // Numero de la paleta, el que pusistes antes
50, 50); // Posicion X e Y en la pantalla donde aparecera
Y como siempre hago, pongo el codigo entero:
#include <PA9.h>
#include "gfx/all_gfx.c"
#include "gfx/all_gfx.h"
int main(int argc, char ** argv)
{
PA_Init();
PA_InitVBL();
PA_LoadSpritePal(0,0,(void*)sprite0_Pal);
PA_CreateSprite(0,0,(void*)Mouse_Sprite,OBJ_SIZE_32X32,1,0, 50, 50);
while (1)
{
PA_WaitForVBL();
}
return 0;
}
Lo compilamos y lo probamos... Y veremos nuestro sprite alli en la pantalla
5.3 Animar los sprites
Esto es bastante facil de hacer
Cogemos este sprite:
Lo covertimos y lo metemos en el juego igual que el paso anterior (el tamaño del sprite es 64x64 por cierto)
Una vez creado, para animarlo usaremos:
PA_StartSpriteAnim(0, // pantalla
0, // número del sprite
0, // Numero de frame donde empieza
6, // Numero de frame cuando termina la animacion
1); // La Velocidad en frames por segundo. Actualmente esta puesta a 1 frame por segundo
Que es un frame?. Bueno si has hecho un gif alguna vez esto se sonara familiar
Para hacer una animacion, lo que se hace es poner un monton de imagenes estaticas. Luego a la hora de animarse, las imagenes pasan rapidamente y asi se ve la animacion
Estas imagenes son las frames
Sencillo no?. Pongo el codigo entero como siempre:
#include <PA9.h>
#include "gfx/all_gfx.c"
#include "gfx/all_gfx.h"
int main(int argc, char ** argv)
{
PA_Init();
PA_InitVBL();
PA_LoadSpritePal(0,0,(void*)sprite0_Pal);
PA_CreateSprite(0,0,(void*)explosion_Sprite,OBJ_SIZE_64X64,1,0, 50, 50);
PA_StartSpriteAnim(0,0,0,6,1);
while (1)
{
PA_WaitForVBL();
}
return 0;
}
Una cosa mas, si quereis que el sprite se posicione en un frame especifico sin animarse. Habria que poner:
PA_SetSpriteAnim(0,//Pantalla
0,//Numero de sprite
1//Numero de frame
);
5.4 Creaccion de sprites
Ahora que sabeis usar los sprites, vamos a aprender a crear uno
Usaremos el progama de dibujo que mas os guste, yo usare el paint que es el que tengo mas a mano
El sprite lo hare de 32x32, es el tamaño mas estandar...
Ponemos el tamaño del lienzo a 32x32. En paint nos vamos a imagen, atributos y seleccionamos 32 de ancho y 32 de alto:
Ponemos la imagen de fondo en magenta. El magenta se obtiene al mezclar 255 de color rojo y 255 de color azul
En paint nos vamos a colores, modificar colores, colores personalizados. Y ponemos en rojo y en azul dicha cantidad, lo de matiz, saturacion y luminosidad ni lo toqueis:
Rellenamos el fondo con magenta...
Y ahora nos pondremos ha hacer la primera frame. El sprite que hare tratara de un circulo que se va haciendo mas y mas grande, y despues mas y mas pequeño. Un pego. Pintamos el circulo
Bien, el segundo frame hay que situarlo debajo del primero. Añadiremos 32 de alto, sobre el fondo blanco pintaremos el siguiente frame, despues lo volveremos a colorear de magenta:
Repetimos el mismo procedimiento de antes para el tercer frame:
Y asi vamos haciendo todos los frames:
Lo guardamos en formato de 256 colores. Y lo probamos haber que tal va (el mio me ha quedado muy chapuzero, se me da muy mal la parte grafica
)
Y con esto acabamos este tutorial. En el proximo aprenderemos a usar los botones y el stylus (dispositivos de entrada y salida)
Saludos