Ir al contenido principal

Comportamientos

Introducción

Un comportamiento es una función que se ejecuta en el Mundo cada tick.

Definir un comportamiento

El siguiente código es un ejemplo de cómo definir un comportamiento personalizado:

const behavior = (world) => {
if (world.time.elapsed % 5000 - world.time.delta < 0) {
const eid = world.createEntity()
Enemy.set(world, eid, {health: 100})
}
}

Registrar un comportamiento

El siguiente código es un ejemplo de cómo registrar un comportamiento personalizado:

ecs.registerBehavior(comportamiento)

Desactivar un comportamiento

El siguiente código es un ejemplo de cómo desactivar un comportamiento personalizado:

ecs.unregisterBehavior(comportamiento)

Consulta de comportamiento

Los comportamientos pueden ejecutar consultas, que devuelven listas de ID de entidades.

const query = ecs.defineQuery([Enemigo, Salud])

const enemyDieBehavior = (mundo) => {
const enemigos = query(mundo)

for (const enemyId in enemigos) {
if (Salud.get(mundo, enemyId).hp <= 0) {
mundo.destruirEntidad(enemyId)
}
}
}

ecs.registerBehavior(enemyDieBehavior)

Sistemas

Los comportamientos también pueden estructurarse como Sistemas, que se ejecutan en entidades que coinciden con consultas específicas y permiten un acceso eficiente a los datos.

consejo

Este enfoque mejora el rendimiento porque los datos como "enemigo" y "salud" están preconfigurados, lo que hace que la iteración sea más rápida.

const enemyDieSystem = ecs.defineSystem([Enemigo, Salud], 
(mundo, eid, [enemigo, salud]) => {
if (salud.hp <= 0) {
mundo.destruirEntidad(eid)
}
}
)

ecs.registerBehavior(enemyDieSystem)