diff --git a/Cargo.toml b/Cargo.toml index 751419c..9c1fc41 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -6,4 +6,5 @@ edition = "2024" [dependencies] bevy = { version = "0.16", features = ["dynamic_linking"] } bevy-inspector-egui = "0.32.0" +bevy_rapier2d = { version = "0.31.0", features = ["debug-render-2d"] } rand = "0.9.2" diff --git a/src/asteroids.rs b/src/asteroids.rs index b41d697..d4d8776 100644 --- a/src/asteroids.rs +++ b/src/asteroids.rs @@ -1,3 +1,4 @@ +use bevy_rapier2d::prelude::Collider; use rand::{Rng, SeedableRng}; use std::time::Duration; @@ -107,8 +108,16 @@ pub fn spawn_asteroid( AsteroidSize::Medium => game_assets.asteroid_medium(), AsteroidSize::Large => game_assets.asteroid_large(), }; + + let collider_radius = match spawn.size { + AsteroidSize::Small => 10.0, + AsteroidSize::Medium => 20.0, + AsteroidSize::Large => 40.0, + }; + commands.spawn(( Asteroid(AsteroidSize::Small), + Collider::ball(collider_radius), Position(spawn.pos), Velocity(spawn.vel), Rotation(0.0), diff --git a/src/lib.rs b/src/lib.rs index 4466db1..8dc4cd7 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -10,6 +10,7 @@ use bevy::prelude::*; use bevy_inspector_egui::InspectorOptions; use bevy_inspector_egui::prelude::ReflectInspectorOptions; +use bevy_rapier2d::{plugin::{NoUserData, RapierPhysicsPlugin}, prelude::Collider, render::RapierDebugRenderPlugin}; use config::{ASTEROID_SMALL_COLOR, SHIP_THRUSTER_COLOR_ACTIVE, SHIP_THRUSTER_COLOR_INACTIVE}; pub struct AsteroidPlugin; @@ -19,6 +20,8 @@ impl Plugin for AsteroidPlugin { app.add_plugins(( title_screen::GameMenuPlugin, preparation_widget::preparation_widget_plugin, + RapierPhysicsPlugin::::pixels_per_meter(10.0), + RapierDebugRenderPlugin::default(), )) .insert_resource(ClearColor(BACKGROUND_COLOR)) .insert_resource(WorldSize { @@ -176,6 +179,7 @@ fn spawn_camera(mut commands: Commands) { fn spawn_player(mut commands: Commands, game_assets: Res) { commands .spawn(( + Collider::ball(0.7), Ship, Wrapping, Position(Vec2::default()),