彼岸之紫鸢BEYOND THE IRIS
游戏

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

用状态机管理回合制战斗流程,从入场动画到结算的完整状态流转。

本篇目录 · 4 节

回合制战斗的核心是状态流转,一个清晰的状态机比一堆 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)

关键点

  • 单一出口:每回合只能通过 CHECK_END 结束

  • 事件驱动:动画播放完成才发信号推进状态,不靠定时器猜

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

下一步

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

讨论

评论与回复审核通过后公开,请保持友善。

登录

图片大图