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)