movement + collision untested and unsued (but for real this time)
All checks were successful
Build Bevy Game (Linux) / build (push) Successful in 18m45s
All checks were successful
Build Bevy Game (Linux) / build (push) Successful in 18m45s
This commit is contained in:
parent
113eabfb16
commit
2c120106c2
3 changed files with 50 additions and 0 deletions
5
src/collider.rs
Normal file
5
src/collider.rs
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
use bevy::{prelude::*, render::renderer};
|
||||||
|
|
||||||
|
#[derive(Component, Default)]
|
||||||
|
#[require(Transform)]
|
||||||
|
pub struct Collider;
|
||||||
38
src/physics_body.rs
Normal file
38
src/physics_body.rs
Normal file
|
|
@ -0,0 +1,38 @@
|
||||||
|
use bevy::{prelude::*, render::renderer};
|
||||||
|
|
||||||
|
#[derive(Component)]
|
||||||
|
#[require(Transform)]
|
||||||
|
pub struct PhysicsBody {
|
||||||
|
pub mass: f32,
|
||||||
|
pub force: Vec2,
|
||||||
|
pub velocity: Vec2,
|
||||||
|
pub drag: f32, // velocity multiplied each physics update by (1-drag)
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Default for PhysicsBody {
|
||||||
|
fn default() -> Self {
|
||||||
|
Self {
|
||||||
|
mass: 1.0,
|
||||||
|
force: Vec2::ZERO,
|
||||||
|
velocity: Vec2::ZERO,
|
||||||
|
drag: 0.0,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn integrate(mut query: Query<(&mut Transform, &mut PhysicsBody)>, time: Res<Time<Fixed>>) {
|
||||||
|
for (mut transform, mut physicsbody) in &mut query {
|
||||||
|
let force = physicsbody.force;
|
||||||
|
let mass = physicsbody.mass;
|
||||||
|
let drag = physicsbody.drag;
|
||||||
|
let delta_secs = time.delta_secs();
|
||||||
|
|
||||||
|
physicsbody.velocity += force * delta_secs / mass;
|
||||||
|
// Drag because stability is good you know
|
||||||
|
physicsbody.velocity *= 1.0 - drag;
|
||||||
|
|
||||||
|
transform.translation.x += physicsbody.velocity.x * delta_secs;
|
||||||
|
transform.translation.y += physicsbody.velocity.y * delta_secs;
|
||||||
|
physicsbody.force = Vec2::ZERO;
|
||||||
|
}
|
||||||
|
}
|
||||||
7
src/sphere_collider.rs
Normal file
7
src/sphere_collider.rs
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
use bevy::{prelude::*, render::renderer};
|
||||||
|
|
||||||
|
#[derive(Component, Default)]
|
||||||
|
#[require(Transform)]
|
||||||
|
pub struct SphereCollider {
|
||||||
|
pub radius: f32,
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue