diff --git a/assets/script/game/skill/STimeComp.ts b/assets/script/game/skill/STimeComp.ts index 8a00f535..01d36249 100644 --- a/assets/script/game/skill/STimeComp.ts +++ b/assets/script/game/skill/STimeComp.ts @@ -7,11 +7,17 @@ export class StimeDataComp extends ecs.Comp { s_uuid: number = 0; totalTime: number = 0; elapsedTime: number = 0; + hitInterval: number = 0; + hitElapsed: number = 0; + pendingClose: boolean = false; reset() { this.s_uuid = 0; this.totalTime = 0; this.elapsedTime = 0; + this.hitInterval = 0; + this.hitElapsed = 0; + this.pendingClose = false; } } @@ -29,12 +35,22 @@ export class STimeSystem extends ecs.ComblockSystem implements ecs.ISystemUpdate if (!timeComp || !skillView) return; const conf = SkillSet[timeComp.s_uuid]; if (!conf || conf.EType !== EType.timeEnd) return; + if (timeComp.pendingClose) { + skillView.close_collider(); + timeComp.pendingClose = false; + } if (timeComp.totalTime <= 0) { skillView.close_collider(); entity.destroy(); return; } timeComp.elapsedTime += this.dt; + timeComp.hitElapsed += this.dt; + if (timeComp.hitInterval > 0 && timeComp.hitElapsed >= timeComp.hitInterval && !timeComp.pendingClose) { + timeComp.hitElapsed -= timeComp.hitInterval; + skillView.atk(null); + timeComp.pendingClose = true; + } if (timeComp.elapsedTime >= timeComp.totalTime) { skillView.close_collider(); entity.destroy(); diff --git a/assets/script/game/skill/Skill.ts b/assets/script/game/skill/Skill.ts index ecc91009..94ce2c6a 100644 --- a/assets/script/game/skill/Skill.ts +++ b/assets/script/game/skill/Skill.ts @@ -150,7 +150,8 @@ export class Skill extends ecs.Entity { if (!sTimeCom) sTimeCom = this.add(StimeDataComp); sTimeCom.reset(); sTimeCom.s_uuid = s_uuid; - sTimeCom.totalTime = Math.max(0, config.time ?? 0); + sTimeCom.totalTime = Math.max(1, config.time ?? 0); + sTimeCom.hitInterval = Math.max(0.5, config.hitcd || 0); } else { const sTimeCom = this.get(StimeDataComp); if (sTimeCom) this.remove(StimeDataComp);