SuperAPI AI 工具集

bevy-turn-system

通用与其它

查看项目

更新于 10-16 08:49

技能介绍

用途:当玩法按回合推进而不是逐帧模拟时使用本技能。时间仍然存在,只是选择不每帧步进模拟。

主要能力与 ECS 结构:先攻值作为组件;当前行动实体与回合数放在同一个资源中(涉及 bevy-data-resources)。系统可在 Update 或固定时间步中修改这些组件;当伤害必须先于死亡结算时使用 .chain()。一次性事实(命中、拾取、任务推进)通过 bevy-events-messaging 传递,本技能不新增事件类型名。

回合归属:先攻是组件数值,回合开始时排序;当前行动者由 TurnClock.order[index] 决定;回合是同一资源上的计数器,在链式结束系统中推进。回合开始或速度属性变化时重建队列,不要在每次行动时重新排序。bevy::state 用于应用模式,不是先攻队列。

示例:依赖为 bevy = "0.20"。每个战斗单位存储 speed、tie_break、action_points;TurnClock 资源保存 round、order、index。build_order 只排序一次,速度相同时用稳定 id 兜底以保证回放确定性。take_action 先做花费检查,成功后设置 end_requested;end_turn 在标志置位时补满行动点并推进索引,索引越界则归零并 round 加一。TurnPlugin 通过 add_systems(Update, (take_action, end_turn).chain()) 注册,两个系统同时可变使用 TurnClock 与 Fighter,必须 .chain() 否则标志与行动点会竞态。

限制:目标为 Bevy 0.20+,仅使用官方文档中的 Bevy crate 与模块,不引入物理、导航、网络或 XR crate;不得在两个无序系统中同时可变查询同一组件;不得在每次行动时排序先攻;不得用 bevy::state 充当先攻队列;文档 URL 不固定 /0.20.0/。其他内容暂未提供。