19 lines
685 B
TypeScript
19 lines
685 B
TypeScript
@ecs.registerSystem()
|
|
export class SkillCollisionSystem extends ecs.System {
|
|
filter(): ecs.IMatcher {
|
|
return ecs.allOf(SkillEffectComp, ColliderComp);
|
|
}
|
|
|
|
update(skills: ecs.Entity[]) {
|
|
skills.forEach(skill => {
|
|
const collider = skill.get(ColliderComp);
|
|
const collisionResult = skill.get(CollisionResultComp) || skill.add(CollisionResultComp);
|
|
|
|
// 检测碰撞(伪代码,实际使用物理引擎检测)
|
|
const hitHeroes = PhysicsSystem.overlap(collider.bounds, 'Hero');
|
|
|
|
// 转换为ECS实体
|
|
collisionResult.targets = hitHeroes.map(h => h.entity);
|
|
});
|
|
}
|
|
}
|