From 27ba03260f06c939951229c7075a1d5c9e4ebba9 Mon Sep 17 00:00:00 2001 From: Cloud Bot Date: Sat, 21 Mar 2026 09:00:43 +0000 Subject: [PATCH] =?UTF-8?q?fix(game):=20=E4=BF=AE=E5=A4=8D=E5=8F=AC?= =?UTF-8?q?=E5=94=A4=E6=8C=89=E9=92=AE=E7=AC=AC=E4=BA=8C=E6=AC=A1=E5=A4=B1?= =?UTF-8?q?=E6=95=88=E5=92=8C=E5=AE=9E=E4=B9=A0=E7=94=9F=E4=B8=8D=E6=94=BB?= =?UTF-8?q?=E5=87=BB=E7=9A=84Bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- game/towers/InternTower.ts | 3 ++- game/towers/TowerBase.ts | 3 ++- game/ui/HUD.ts | 7 +++++++ 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/game/towers/InternTower.ts b/game/towers/InternTower.ts index 798cf7b..cf72c47 100644 --- a/game/towers/InternTower.ts +++ b/game/towers/InternTower.ts @@ -10,7 +10,8 @@ export class InternTower extends TowerBase { public onSelfDestroy?: (tower: InternTower) => void constructor(scene: Phaser.Scene, gridX: number, gridY: number) { - super(scene, gridX, gridY, 50, 1, 15, 1.5, 'tower-intern') + // attackRange=1.5:近战覆盖相邻格,避免格子边界浮点漏攻击 + super(scene, gridX, gridY, 50, 1.5, 15, 1.5, 'tower-intern') } override update(delta: number, enemies: EnemyBase[]): void { diff --git a/game/towers/TowerBase.ts b/game/towers/TowerBase.ts index 345a4ac..c1bd0db 100644 --- a/game/towers/TowerBase.ts +++ b/game/towers/TowerBase.ts @@ -100,7 +100,8 @@ export abstract class TowerBase { } protected findTarget(enemies: EnemyBase[]): EnemyBase | null { - const rangePx = this.attackRange * this.cellW + // +0.5格容忍量,避免怪物恰好在射程边界时因浮点误差漏判 + const rangePx = (this.attackRange + 0.5) * this.cellW let best: EnemyBase | null = null let bestProgress = -1 for (const e of enemies) { diff --git a/game/ui/HUD.ts b/game/ui/HUD.ts index fd7491c..ab8dc41 100644 --- a/game/ui/HUD.ts +++ b/game/ui/HUD.ts @@ -11,6 +11,7 @@ export class HUD { private scene: Phaser.Scene private waveBtn: Phaser.GameObjects.Text | null = null private waveBannerTimeout: (() => void) | null = null + private _onClick: (() => void) | null = null constructor(scene: Phaser.Scene) { this.scene = scene @@ -22,6 +23,7 @@ export class HUD { */ createWaveButton(onClick: () => void): void { if (this.waveBtn) this.waveBtn.destroy() + this._onClick = onClick // 保存引用,供 enableWaveButton 重新绑定 this.waveBtn = this.scene.add .text(GAME_WIDTH - 160, HUD_HEIGHT + 20, '▶ 召唤下一波', { @@ -58,6 +60,11 @@ export class HUD { enableWaveButton(): void { if (!this.waveBtn) return this.waveBtn.setStyle({ color: '#A78BFA', backgroundColor: '#1e3a5f' }) + // 重新绑定点击事件(disableWaveButton 会 removeAllListeners) + this.waveBtn.removeAllListeners('pointerdown') + if (this._onClick) { + this.waveBtn.on('pointerdown', () => this._onClick!()) + } } /**