From f4fb561319fec316c500c6c6d64e56ee05907e06 Mon Sep 17 00:00:00 2001 From: panFD Date: Thu, 8 Oct 2026 16:44:49 +0800 Subject: [PATCH] =?UTF-8?q?fix(map):=20=E8=B0=83=E6=95=B4=E4=B8=8B?= =?UTF-8?q?=E4=B8=80=E5=9B=9E=E5=90=88=E5=88=B7=E6=80=AA=E6=97=B6=E6=9C=BA?= =?UTF-8?q?=E9=81=BF=E5=85=8D=E4=B8=8E=E8=8B=B1=E9=9B=84=E8=BF=87=E5=9C=BA?= =?UTF-8?q?=E5=90=8C=E5=B8=A7=E7=A7=BB=E5=8A=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修改 autoNextPhase 逻辑,将 advanceToNextSection 从 PrepareStart 阶段移至 PrepareEnd 阶段,确保英雄归位待机约 1 秒后再生成怪物,使怪物随回合开始横幅同步登场,解决与英雄过场行军同帧移动的显示问题。 --- assets/script/game/map/MissionComp.ts | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/assets/script/game/map/MissionComp.ts b/assets/script/game/map/MissionComp.ts index 1cfb284a..ebc05040 100644 --- a/assets/script/game/map/MissionComp.ts +++ b/assets/script/game/map/MissionComp.ts @@ -582,12 +582,15 @@ export class MissionComp extends CCComp { private autoNextPhase() { switch (this.currentPhase) { case MissionPhase.PrepareStart: - // 节间过场倒计时结束:推进到下一节、停背景滚动、派发 SectionStart 刷怪,进入 PrepareEnd 自动开战 + // 节间过场倒计时结束:停背景滚动、英雄归位转待机,进入 PrepareEnd 缓冲 this.stopWaveCountdown(); - this.advanceToNextSection(); this.changePhase(MissionPhase.PrepareEnd); break; case MissionPhase.PrepareEnd: + // 先生成下一回合怪物再进 BattleStart:此时英雄已待机约 1s, + // 怪物随"第 X 回合开始"横幅从右侧跑入,避免与英雄过场行军同帧移动; + // SectionStart 同步派发 NewWave,保证 changePhase(BattleStart) 的 isBossWave 就绪 + this.advanceToNextSection(); this.changePhase(MissionPhase.BattleStart); break; case MissionPhase.BattleStart: @@ -854,7 +857,10 @@ export class MissionComp extends CCComp { * 2. 不清理英雄/技能实体、不重置局内数据、不重新三选一——英雄保留并自动归位(编队排队)。 * 3. 进度实时镜像到 HUD,但不写持久存档(存档只在整关通关时推进到下一关)。 * - * 调用时机:PrepareStart 过场倒计时结束(autoNextPhase)。 + * 调用时机:PrepareEnd 结束、进入 BattleStart 前(autoNextPhase)。 + * Why: 过场倒计时(PrepareStart)结束时英雄刚归位转待机,若同帧刷怪会出现 + * 怪物与英雄一起移动的表现;推迟到 PrepareEnd 结束刷怪,英雄已待机约 1s, + * 怪物从右侧跑入与"第 X 回合开始"横幅同步登场。 * 保证:仅 1~4 回合清场后触发,末回合(BOSS_SECTION)已走 open_Victory 结算,不会推进。 */ private advanceToNextSection() {