Adds movement plugin, ball moves now

master
Joey Pollack 2 years ago
parent dcbd33e136
commit c586c87afe

@ -1,13 +1,16 @@
use bevy::prelude::*;
use crate::movement::{MovementPlugin, Velocity};
pub struct CorePlugin;
impl Plugin for CorePlugin
{
fn build(&self, app: &mut App)
{
app.add_systems(Startup, setup);
app.add_plugins(MovementPlugin)
.add_systems(Startup, setup);
}
}
@ -43,11 +46,12 @@ fn setup(mut commands: Commands, server: Res<AssetServer>, mut ambient_light: Re
// BALL
let ball_handle: Handle<Scene> = server.load("ball.glb#Scene0");
commands.spawn(SceneBundle {
commands.spawn((SceneBundle {
scene: ball_handle,
transform: Transform::from_xyz(0.0, -7.75, 0.0),
..default()
});
},
Velocity::new(0.5, 0.5, 0.0)));
// PADDLE
let paddle_handle: Handle<Scene> = server.load("paddle.glb#Scene0");

@ -1,3 +1,4 @@
pub mod core;
pub mod movement;

@ -0,0 +1,39 @@
use bevy::prelude::*;
pub struct MovementPlugin;
impl Plugin for MovementPlugin
{
fn build(&self, app: &mut App)
{
app.add_systems(Update, update_movement);
}
}
#[derive(Component)]
pub struct Velocity(Vec3);
impl Default for Velocity
{
fn default() -> Self
{
Self { 0: Vec3::new(0.0, 0.0, 0.0)}
}
}
impl Velocity
{
pub fn new(x: f32, y: f32, z: f32) -> Self{
Self { 0: Vec3::new(x, y, z) }
}
}
// SYSTEMS
fn update_movement(mut moving_objects: Query<(&Velocity, &mut Transform)>, time: Res<Time>)
{
for (velocity, mut transform) in moving_objects.iter_mut()
{
transform.translation += velocity.0 * time.delta_seconds();
}
}
Loading…
Cancel
Save