From 6d666f2a3c36b251b7bf236b1d25bf3ae7ea27bd Mon Sep 17 00:00:00 2001 From: zefad Date: Thu, 17 Sep 2026 19:42:23 +0200 Subject: [PATCH] Obstacle with collision --- src/obstacle.rs | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/src/obstacle.rs b/src/obstacle.rs index 06dd060..c6f4c21 100644 --- a/src/obstacle.rs +++ b/src/obstacle.rs @@ -1,4 +1,46 @@ +use crate::collision::Collider; use bevy::prelude::*; +use rand::RngExt; #[derive(Component)] pub struct Obstacle; + +fn spawn_obstacle(commands: &mut Commands, position: Vec2, size: Vec2) { + commands.spawn(( + Obstacle, + Collider { size }, + Transform::from_xyz(position.x, position.y, 1.0), + Sprite::from_color(Color::srgb(1.0, 0.5, 0.1), size), + )); +} + +// Temporary fonction for display random obstacles +fn debug_spawn(mut commands: Commands) { + let obstacles = [ + (Vec2::new(-400.0, -950.0), Vec2::new(200.0, 32.0)), + (Vec2::new(100.0, -1050.0), Vec2::new(300.0, 32.0)), + (Vec2::new(-200.0, -1200.0), Vec2::new(100.0, 100.0)), + (Vec2::new(300.0, -1350.0), Vec2::new(250.0, 32.0)), + ]; + + let mut rng = rand::rng(); + + for i in 0..20 { + let y_offset = i as f32 * -300.0; + let x_offset = rng.random_range(-400.0..=400.0); + + for (position, size) in obstacles { + let position = position + Vec2::new(x_offset, y_offset); + + spawn_obstacle(&mut commands, position, size); + } + } +} + +pub struct ObstaclePlugin; + +impl Plugin for ObstaclePlugin { + fn build(&self, app: &mut App) { + app.add_systems(Startup, debug_spawn); + } +}