From 0181ad7f2dfb7fdbae11c9a8975c002066c2144b Mon Sep 17 00:00:00 2001 From: Rendo Date: Sat, 15 Nov 2025 10:26:49 +0500 Subject: [PATCH] Collision test --- src/collision.rs | 6 ++++++ src/damagable/enemy.rs | 4 ++++ src/damagable/mod.rs | 25 ++++++++++++++++++++++++- 3 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 src/damagable/enemy.rs diff --git a/src/collision.rs b/src/collision.rs index 7953469..39d25e1 100644 --- a/src/collision.rs +++ b/src/collision.rs @@ -11,6 +11,12 @@ impl Plugin for CollisionPlugin { #[derive(Component)] pub struct Collider(pub f32); +impl Collider { + pub fn new(radius: f32) -> Collider { + Collider(radius) + } +} + #[derive(EntityEvent)] pub struct Collided { pub entity: Entity, diff --git a/src/damagable/enemy.rs b/src/damagable/enemy.rs new file mode 100644 index 0000000..e19177b --- /dev/null +++ b/src/damagable/enemy.rs @@ -0,0 +1,4 @@ +use bevy::ecs::component::Component; + +#[derive(Component)] +pub struct Enemy; diff --git a/src/damagable/mod.rs b/src/damagable/mod.rs index 1d18f51..deb9cf6 100644 --- a/src/damagable/mod.rs +++ b/src/damagable/mod.rs @@ -1,7 +1,14 @@ use bevy::prelude::*; -use crate::damagable::player::{Player, player_movement_system}; +use crate::{ + collision::{Collided, Collider}, + damagable::{ + enemy::Enemy, + player::{Player, player_movement_system}, + }, +}; +pub mod enemy; pub mod player; pub struct DamagablePlugin; @@ -32,6 +39,7 @@ pub struct Movable { fn setup(mut commands: Commands, asset_server: Res) { let player_sprite: Handle = asset_server.load("player.png"); + let enemy_sprite: Handle = asset_server.load("enemy.png"); commands.spawn(Camera2d); @@ -47,6 +55,21 @@ fn setup(mut commands: Commands, asset_server: Res) { Damagable { hp: 10 }, Sprite::from_image(player_sprite), Transform::from_xyz(20., 20., 0.), + Collider::new(8.), + )); + + commands.spawn(( + Enemy, + Movable { + linear_speed: 0., + rotation_speed: 0., + max_linear_speed: 500., + max_rotation_speed: f32::to_radians(360.), + }, + Damagable { hp: 10 }, + Sprite::from_image(enemy_sprite), + Transform::from_xyz(0., 0., 0.), + Collider::new(8.), )); }