Obstacle with collision
This commit is contained in:
@@ -1,4 +1,46 @@
|
|||||||
|
use crate::collision::Collider;
|
||||||
use bevy::prelude::*;
|
use bevy::prelude::*;
|
||||||
|
use rand::RngExt;
|
||||||
|
|
||||||
#[derive(Component)]
|
#[derive(Component)]
|
||||||
pub struct Obstacle;
|
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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user