#bevy #bevy-plugin #board #gamedev #board-game #logic #match

bevy_match3

为任何Bevy项目快速添加匹配3系统的逻辑库

6个版本 (破坏性更新)

0.4.0 2024年1月26日
0.3.0 2023年8月3日
0.2.0 2022年11月15日
0.1.0 2022年8月1日
0.0.1 2022年3月7日

#405 in 游戏开发

每月45次下载

MIT/Apache

1.5MB
1K SLoC

Bevy Match 3

crates.io docs.rs Crates.io

bevy_match3 是一个处理Bevy中匹配3游戏逻辑的crate。

Bevy版本支持

bevy bevy_match3
0.6 0.0.1
0.7 0.0.2
0.8 0.1.0
0.9 0.2.0
0.10 N/A
0.11 0.3.0
0.12 0.4.0

功能

  • 可配置宝石类型数量和棋盘尺寸
  • 创建棋盘时保证没有匹配
  • 级联匹配
  • 棋盘移动完成后检查匹配
  • 洗牌棋盘

立即todo

  • 将棋盘与插件解耦,并创建多个棋盘示例

根据需求可能的todo

  • 实体而不是u32宝石类型
  • 更多匹配类型
  • 自定义各种方面,例如让交换始终成功并允许创建棋盘时匹配

示例

要开始使用此crate,您只需要设置插件

use bevy_match3::prelude::*;
fn main() {
    App::new()
        .add_plugins((DefaultPlugins, Match3Plugin))
        .run();
}

响应棋盘事件

fn consume_events(
    mut events: ResMut<BoardEvents>,
) {
    if let Ok(event) = events.pop() {
        match event {
            BoardEvent::Swapped(pos1, pos2) => todo!(),
            BoardEvent::FailedSwap(pos1, pos2) => todo!(),
            BoardEvent::Popped(pos) => todo!(),
            BoardEvent::Matched(matches) => todo!(),
            BoardEvent::Dropped(drops) => todo!(),
            BoardEvent::Spawned(spawns) => todo!(),
        }
    }
}

然后开始使用BoardCommands资源发送命令到棋盘!

目前有一个包含所有功能的示例在 basic.rs

许可证

此仓库中的所有代码都根据您的选择,在以下两种许可证下双授权

鸣谢

依赖关系

~23MB
~418K SLoC