LightRenderer

El componente LightRenderer renderiza una fuente de luz circular. Funciona iluminando zonas dentro de una máscara de oscuridad, por lo que requiere un DarknessRenderer en la escena para tener algún efecto. Usa el Transform de la entidad para la posición. Consulta Renderizado para una visión general.

Opciones

OpciónTipoValor por defectoDescripción
radiusnumber0Radio de la luz.
intensitynumber1Intensidad de la luz entre 0 y 1.
smoothbooleanfalseSuaviza el borde de la luz.
stepsnumber0Cantidad de anillos de opacidad de una luz suave. 0 significa un desvanecimiento continuo.
layerstring"Default"La capa de oscuridad a la que afecta esta luz.
colorstringundefinedColor del brillo en hexadecimal (#RRGGBB), sumado sobre la zona iluminada. Su fuerza la define intensity, un canal alfa se ignora. Sin brillo si no se define.

Ejemplo

import { Transform, LightRenderer } from "angry-pixel";

this.entityManager.createEntity([
    new Transform(),
    new LightRenderer({
        radius: 100,
        intensity: 0.8,
        smooth: true,
        layer: "Darkness",
        color: "#FF9900",
    }),
]);

El layer debe coincidir con la capa del DarknessRenderer que ilumina.

Píxeles de luz

La luz se calcula una vez por unidad del mundo, así que con un zoom de cámara de 4 cada píxel de luz cubre 4×4 píxeles de pantalla. Los centros de las luces se ajustan a unidades enteras del mundo. Con smooth activado y steps mayor que 0, la luz se desvanece en esa cantidad de anillos, cada uno dibujado con píxeles de luz enteros. El brillo de color sigue el mismo desvanecimiento, anillos y píxeles.

Cada DarknessRenderer dibuja hasta 256 luces en pantalla; las GPU con menos espacio de uniforms permiten menos. Las luces fuera de la pantalla se omiten y no cuentan.