Expand description
Plugin Bevy pour un duel joueur / IA.
Deux combattants (ou plus, avec plusieurs ennemis), de la santé, des factions pour savoir qui peut blesser qui, et une IA simple qui fonce sur le joueur et attaque dès qu’elle est à portée.
§Ce que le plugin gère
- le comportement de l’IA ;
- les animations (course / attaque) ;
- la hitbox d’attaque, les dégâts et l’invulnérabilité après un coup ;
- la mort des combattants.
§Ce qu’il ne gère pas
- le chargement des assets : vous devez construire la ressource
FighterAssets; - l’input du joueur : appelez
start_attackdepuis votre propre système, planifié.before(AiDuelSet).
§Organisation du code
| Module | Contenu |
|---|---|
components | configuration, assets, composants |
systems | systèmes exécutés par le plugin |
racine (lib) | plugin, AiDuelSet, spawn_fighter, start_attack |
§Exemple minimal
use bevy::prelude::*;
use ai_duel::prelude::*;
fn main() {
App::new()
.add_plugins(DefaultPlugins)
.add_plugins(AiDuelPlugin)
.add_systems(Startup, setup)
.run();
}
fn setup(
mut commands: Commands,
asset_server: Res<AssetServer>,
mut layouts: ResMut<Assets<TextureAtlasLayout>>,
config: Res<AiDuelConfig>,
) {
commands.spawn(Camera2d);
let assets = FighterAssets {
run_sheet: asset_server.load("run.png"),
run_layout: layouts.add(TextureAtlasLayout::from_grid(
UVec2::new(96, 80), 8, 1, None, None)),
attack_sheet: asset_server.load("attack.png"),
attack_layout: layouts.add(TextureAtlasLayout::from_grid(
UVec2::new(96, 80), 6, 1, None, None)),
};
// le joueur, à gauche
spawn_fighter(&mut commands, &assets, &config,
Vec3::new(-250.0, 0.0, 0.0), Faction::Player, None);
// un ennemi piloté par l'IA, à droite
spawn_fighter(&mut commands, &assets, &config,
Vec3::new(250.0, 0.0, 0.0), Faction::Enemy,
Some(AiController::default()));
commands.insert_resource(assets);
}Re-exports§
pub use components::*;
Modules§
- components
- Ressources, composants et configuration du plugin.
- prelude
- Import pratique :
use ai_duel::prelude::*;. - systems
- Les systèmes ajoutés par
AiDuelPlugin.
Structs§
- AiDuel
Plugin - À ajouter après
DefaultPlugins. Enregistre la configuration par défaut (AiDuelConfig) et tous les systèmes du duel. - AiDuel
Set - Ensemble de systèmes du duel, exécutés dans l’ordre cooldowns → IA → animation → hitbox → collisions → santé → mort.
Functions§
- spawn_
fighter - Spawne un combattant complet (sprite, vie, hurtbox, cooldown, état…) et sa hitbox en enfant, inactive au départ.
- start_
attack - Bascule un combattant en attaque : change l’animation et remet le compteur de frame à zéro. Ne fait rien s’il attaque déjà (une attaque n’est pas interruptible).