Animator

El componente Animator reproduce animaciones de sprites. Contiene un mapa de animaciones con nombre y controla cuál se está reproduciendo, su velocidad y su estado de reproducción. Funciona junto con un SpriteRenderer en la misma entidad.

Opciones

OpciónTipoValor por defectoDescripción
animationsMap<string, Animation>vacíoAnimaciones con nombre disponibles para el componente.
animationstringEl nombre de la animación a reproducir.
speednumber1Multiplicador de la velocidad de reproducción.
playingbooleanfalseSi la animación se está reproduciendo.
ignoreTimeScalebooleanfalseSi es true, la reproducción ignora la escala de tiempo.

Propiedades de solo lectura

PropiedadTipoDescripción
currentFramenumberEl frame actual de la animación en reproducción.
currentTimenumberEl tiempo transcurrido de la animación en reproducción.

Métodos

MétodoDescripción
play(animation?)Reproduce la animación. Si se indica un nombre, cambia a ella y la reinicia.
pause()Pausa la reproducción, manteniendo el frame actual.
stop()Detiene la reproducción y vuelve al primer frame.

Animation

Cada entrada de animations es una Animation, que describe la imagen de origen y la secuencia de frames:

OpciónTipoValor por defectoDescripción
imageHTMLImageElement | HTMLImageElement[] | string | string[]La(s) imagen(es) de origen o el/los nombre(s) de recurso.
slice{ size: Vector2; offset?: Vector2; padding?: Vector2 }Cómo recortar los frames de una hoja de sprites.
framesnumber[][]La secuencia de índices de frame a reproducir.
fpsnumber12Frames por segundo.
loopbooleanfalseSi la animación se repite.

Ejemplo

import { Transform, SpriteRenderer, Animator, Animation, Vector2 } from "angry-pixel";

const idle = new Animation({
    image: "player.png",
    slice: { size: new Vector2(32, 32) },
    frames: [0, 1, 2, 3],
    fps: 10,
    loop: true,
});

this.entityManager.createEntity([
    new Transform(),
    new SpriteRenderer(),
    new Animator({
        animations: new Map([["idle", idle]]),
        animation: "idle",
        playing: true,
    }),
]);