Hay muchas formas de hacer las animaciones para los procesos, yo te propongo una que es estupenda, y reutilizable, mas bien se puede definir como una animación global para todos los personajes que compartan el mismo tipo de movimientos/animaciones, un ejemplo de esto seria los clasicos personajes de un juego RPG, donde puedes andar en 4 u 8 direcciónes y las animaciones siempre son iguales para todos los personajes.
El sistema se basa en lo siguiente:
Crear un set de variables GLOBAL que corresponde a cada una de las animaciones, un ejemplo de nombres seria:
ANIMA_UP, ANIMA_DW, ANIMA_LEFT, ANIMA_RIGHT;
Entonces creas un proceso PREDEFINIDO como este:
Code: Select all
PROCESS ANIMA_PERSO();
BEGIN
ANIMA_UP=1;
ANIMA_DER=4;
ANIMA_DW=7;
ANIMA_IZQ=10;
LOOP
IF(KEY(_UP) && ANIMA_UP<3)ANIMA_UP++;ELSE ANIMA_UP=1;END
IF(KEY(_RIGHT) && ANIMA_DER<6)ANIMA_DER++;ELSE ANIMA_DER=4;END
IF(KEY(_LEFT) && ANIMA_IZQ<12)ANIMA_IZQ++;ELSE ANIMA_IZQ=10;END
IF(KEY(_DOWN) && ANIMA_DW<9)ANIMA_DW++;ELSE ANIMA_DW=7;END
FRAME(500);
END
END
Como ves, se trata de un fichero FPG que contiene 3 gráficos por animación, como los tipicos del gamemaker xp, vx, etc..
Lo mejor se este sistema es que, el FPG es asignado en el proceso del personaje, así, puedes controlar cualquier tipo de perso con el mismo proceso de animación.
Además, este proceso es sumamente ligero en carga a la CPU pues no tiene que mostrar ningún gráfico.
Con este proceso corriendo en todo momento tienes que, al pulsar una ARROW_KEY inicias la animación, y si dejas de pulsarla, la animación vuelve al primer valor de sus 3 gráficos.
Es un sistema muy sencillo y bastante versatil, si te has fijado habrás visto que hay un:
FRAME(500);
Si ajustas ese valor a un numero mas alto, las animaciones seran mas lentas, si lo reduces, las harás mas rapidas..
Entonces en el proceso del personaje solo hayq ue poner esto:
if (key(_left)) graph = anima_left;end
Si el personaje decides que ha de moverse en 8 posiciones, 4 standard + diagonales, solo es colocar las lineas que controlan la animación de la tecla Izquierda y Derecha detras de las de ARRIBAS y ABAJO, de esta forma impones que aunque pulses UP+LEFT, la animación a mostrar siempre será ANIMA_LEFT.
No se si tenias ya un sistema pensado, espero qeu esto te sea de ayuda en tu proyecto
