Acción en varias direcciones con 1 sólo sprite

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í.

Deja un Comentario

Tu dirección de correo electrónico no será publicada. Los campos requeridos están marcados *

*
*

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.