3 releases
Uses new Rust 2024
new 0.1.2 | Apr 20, 2025 |
---|---|
0.1.1 | Apr 20, 2025 |
0.1.0 | Apr 20, 2025 |
#261 in Game dev
66 downloads per month
55KB
1.5K
SLoC
Bevy Card3d Kit
使用方法
- 引入插件
fn main() {
App::new()
.add_plugins((
DefaultPlugins,
// 添加这个插件
Card3DPlugins))
// .add_plugins(WorldInspectorPlugin::new())
.add_systems(Startup, setup)
.add_systems(Update, rotate_entities)
.run();
}
- 建立数据类型 并实现正反面的方法
#[derive(Component, Clone)]
pub struct CardInfo {
pub name: String,
}
impl CardMaterialGetter for CardInfo {
fn get_face_mal(
&self,
materials: &mut ResMut<Assets<StandardMaterial>>,
asset_server: &Res<AssetServer>,
) -> Handle<StandardMaterial> {
materials.add(StandardMaterial {
base_color: Color::WHITE,
unlit: true,
base_color_texture: Some(asset_server.load(format!("cards/{}.png", self.name))),
alpha_mode: AlphaMode::Blend,
..Default::default()
})
}
fn get_back_mal(
&self,
materials: &mut ResMut<Assets<StandardMaterial>>,
asset_server: &Res<AssetServer>,
) -> Handle<StandardMaterial> {
materials.add(StandardMaterial {
base_color: Color::WHITE,
unlit: true,
base_color_texture: Some(asset_server.load(format!("cards/{}.png", "back"))),
alpha_mode: AlphaMode::Blend,
..Default::default()
})
}
}
pub struct SimplePlugin;
impl Plugin for SimplePlugin {
fn build(&self, app: &mut App) {
bind_card_render::<CardInfo>(app);
}
}
- 之后即可使用
fn setup(mut commands: Commands) {
// 相机
commands.spawn((
SharkCamera,
Camera3d::default(),
Transform::from_xyz(0., 0., 15.).looking_at(Vec3::ZERO, Vec3::Y),
));
// 光源
commands.spawn((
PointLight {
shadows_enabled: true,
..default()
},
Transform::from_xyz(0.0, 0.0, 10.0),
));
commands.spawn((
Rotating,
CardInfo {
name: "NAAI-A-001".to_string(),
},
Card {
origin: Transform::from_xyz(0.0, 0.0, HAND_CARD_LEVEL),
},
));
}
示例
example | desc |
---|---|
simple | 基础使用 |
hand_card | 手牌 |
zone | 场地基础 |
card_on_zone | 卡片放置到不同的场地上 |
card_on_card | 卡片放到卡片上 |
card_preview | 预览图片的特性 |
simple.rs
https://github.com/user-attachments/assets/892158c5-2788-4906-a22a-7fca0f820ec9
hand_card.rs
https://github.com/user-attachments/assets/124294e4-1d45-40a7-8c49-8dcf29eaf198
zone.rs
card_on_zone.rs 简单的实例 拖拽到不同的位置进行不同的处理。
https://github.com/user-attachments/assets/4490abbf-29ee-4af9-824a-74af213052c3
版本
bevy | bevy_card3d_kit |
---|---|
0.15 | 0.1.1 |
鸣谢
感谢 Wechat群Bevy引擎学习交流 感谢 Rabbival 和它的仓库 bevy_play_card 如果你要开发2d的卡片游戏可以参考他的项目 https://github.com/Rabbival/bevy_play_card
Dependencies
~46–77MB
~1.5M SLoC