Este script nos entrega la facilidad de usar tan solo 1 sprite para cada acción de un personaje (ej.: caminar, atacar, morir, etc.), conteniendo todas las direcciones en las que se moverá.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | ///draw_sprite_dir(direcciones); var final_animacion = false; var direcciones = argument[0]; var angulos = floor(direction / (360 / direcciones)); var subimagenes = image_number / direcciones; var index_minimo = angulos * subimagenes; var index_maximo = index_minimo + subimagenes - image_speed; if ((image_index < index_minimo) || (image_index >= index_maximo)) { if (image_index >= index_maximo) final_animacion = true; image_index = index_minimo; } draw_self(); return final_animacion; |
Se debe colocar en el evento Draw del objeto que contenga el sprite y reemplazará la acción de dibujo. Además de que devuelve true o false cuando termina la animación en una de las direcciones.
Ejemplo de uso:
1 2 3 4 5 6 7 8 | ///EVENTO DRAW if (sprite_index == spr_personaje_dispara) { if (draw_sprite_dir(4)) { instance_create(x, y, obj_bala); } } |
En este ejemplo, el objeto comprueba de que se esté ejecutando la animación de disparo del personaje y cuando termina esta animación, crea un objeto que representa la bala.
Pueden descargar el archivo GML para importarlo a sus proyectos pinchando aquí.