Passer au contenu principal

Comportements

Introduction

Un comportement est une fonction qui s'exécute sur le World à chaque tic-tac.

Définir un comportement

Le code suivant est un exemple de définition d'un comportement personnalisé :

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

Enregistrement d'un comportement

Le code suivant est un exemple d'enregistrement d'un comportement personnalisé :

ecs.registerBehavior(comportement)

Désactiver un comportement

Le code suivant est un exemple de désactivation d'un comportement personnalisé :

ecs.unregisterBehavior(comportement)

Requête sur le comportement

Les comportements peuvent exécuter des requêtes qui renvoient des listes d'identifiants d'entités.

const query = ecs.defineQuery([Enemy, Health])

const enemyDieBehavior = (world) => {
const enemies = query(world)

for (const enemyId in enemies) {
if (Health.get(world, enemyId).hp <= 0) {
world.destroyEntity(enemyId)
}
}
}

ecs.registerBehavior(enemyDieBehavior)

Systèmes

Les comportements peuvent également être structurés comme des systèmes, qui s'exécutent sur des entités correspondant à des requêtes spécifiques et permettent un accès efficace aux données.

conseil

Cette approche améliore les performances car les données telles que l'"ennemi" et la "santé" sont prédéfinies, ce qui accélère l'itération.

const enemyDieSystem = ecs.defineSystem([Enemy, Health],
(world, eid, [enemy, health]) => {
if (health.hp <= 0) {
world.destroyEntity(eid)
}
}
)

ecs.registerBehavior(enemyDieSystem)