You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Phaser 3任务状态切换问题:需替换talkCount触发doctorQuest为complete的逻辑

解决Phaser 3任务状态跳转跳过对话的问题

当前问题出在complete状态的触发逻辑上——用累计对话次数talkCount >=4来触发,会导致玩家在found状态下多次对话时直接跳过该状态的对话内容,直接切换到complete。

解决方案思路

放弃用对话次数作为complete状态的触发条件,改为仅当任务处于found状态时,玩家完成一次对话(触发T键交互)后,才将状态切换为complete。这样能确保玩家必须在found状态下至少进行一次对话,才会进入最终完成状态。

修改后的核心代码

首先调整状态切换逻辑,移除基于talkCount的complete触发:

if (this.talkCount == 2){
    doctorQuest = "active";
}

// 收集齐物品且任务处于激活状态时,切换到found
if (this.has("medBag") && this.has("stephascope") && this.has("shot") && doctorQuest == "active"){
    doctorQuest = "found";
}

// 移除原有的talkCount >=4触发complete的代码

然后修改对话触发的逻辑,在交互时判断当前任务状态:

if ((this.checkCollision(this.p1, this.curie) && Phaser.Input.Keyboard.JustDown(this.keyT))) {
    this.talking = !this.talking;
    
    // 仅当当前任务处于found状态时,完成本次对话后切换为complete
    if (doctorQuest === "found") {
        doctorQuest = "complete";
    }
    
    // 如果talkCount还有其他业务用途则保留,否则可考虑删除
    this.talkCount += 1;
}

额外优化建议

如果需要更严谨的流程(比如确保玩家看完found状态的对话内容后才切换状态),可以结合对话窗口的关闭事件来触发complete状态的切换,而不是在按下T键时立刻切换。比如在对话窗口关闭的回调里判断当前状态是found,再设置为complete。

内容的提问来源于stack exchange,提问作者EmptyStone

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 00:09:49