Files
pixelheros/assets/script/game/heros/HeroSystem.ts
2025-01-31 21:50:59 +08:00

22 lines
788 B
TypeScript

@ecs.registerSystem()
export class HeroMoveSystem extends ecs.System {
filter(): ecs.IMatcher {
return ecs.allOf(HeroModelComp, HeroViewComp, MoveToComp);
}
update(entities: Hero[]) {
const deltaTime = oops.timer.delta;
entities.forEach(hero => {
// 每个英雄独立计算移动
const move = hero.get(MoveToComp);
const view = hero.get(HeroViewComp);
// 计算移动向量(单个英雄逻辑)
const dir = move.target.subtract(view.node.position).normalize();
const speed = view.speed * deltaTime;
// 更新位置(独立操作)
view.node.position = view.node.position.add(dir.multiplyScalar(speed));
});
}
}