Godot 开发笔记:回合制战斗的状态机设计

回合制战斗的核心是状态流转,一个清晰的状态机比一堆 if-else 可靠得多。

状态划分

战斗场景拆成 6 个状态:

enum BattleState {
    INTRO,      # 入场演出
    PLAYER_TURN, # 玩家回合
    ENEMY_TURN, # 敌人回合
    RESOLVE,    # 结算伤害
    CHECK_END,  # 检查胜负
    VICTORY,    # 胜利演出
    DEFEAT,     # 失败演出
}

状态机核心

class BattleFSM:
    var current: BattleState = BattleState.INTRO

    func transition(next: BattleState) -> void:
        _exit_state(current)
        current = next
        _enter_state(current)

关键点

状态机不怕状态多,怕的是状态之间互相偷渡。

下一步

接入角色技能系统和 buff 结算。