movement + collision untested and unsued
Some checks failed
Build Bevy Game (Linux) / build (push) Failing after 18m36s
Some checks failed
Build Bevy Game (Linux) / build (push) Failing after 18m36s
This commit is contained in:
parent
27da890604
commit
113eabfb16
2 changed files with 59 additions and 11 deletions
62
src/kirby.rs
62
src/kirby.rs
|
|
@ -1,19 +1,63 @@
|
|||
use bevy::{prelude::*, render::renderer};
|
||||
use crate::physics_body::PhysicsBody;
|
||||
use crate::sphere_collider::SphereCollider;
|
||||
use bevy::prelude::*;
|
||||
|
||||
#[derive(Component)]
|
||||
#[require(Transform, Sprite)]
|
||||
pub struct Kirby();
|
||||
#[require(Sprite, PhysicsBody, SphereCollider)]
|
||||
pub struct Kirby {
|
||||
move_speed: f32,
|
||||
}
|
||||
|
||||
pub fn kirby_spawn(mut commands: Commands, asset_server: Res<AssetServer>) {
|
||||
let sprite = Sprite::from_image(asset_server.load("sprites/kirby.png"));
|
||||
commands.spawn((Kirby(), Transform::from_xyz(0.0, 0.0, 0.0), sprite));
|
||||
let body = PhysicsBody {
|
||||
mass: 10.0,
|
||||
force: Vec2::ZERO,
|
||||
velocity: Vec2::ZERO,
|
||||
drag: 0.01,
|
||||
};
|
||||
let transform = Transform::from_xyz(0.0, 0.0, 0.0).with_scale(Vec3::ONE * 0.25);
|
||||
commands.spawn((Kirby { move_speed: 200.0 }, transform, sprite, body));
|
||||
}
|
||||
|
||||
pub fn kirby_input(
|
||||
keyboard_input: Res<ButtonInput<KeyCode>>,
|
||||
// query: Query<&mut Transform, With<Kirby>>,
|
||||
) {
|
||||
if keyboard_input.pressed(KeyCode::Space) {
|
||||
pub fn get_dir(keys: Res<ButtonInput<KeyCode>>) -> Vec2 {
|
||||
if keys.pressed(KeyCode::Space) {
|
||||
println!("SUCKING");
|
||||
}
|
||||
|
||||
let mut dir = Vec2::ZERO;
|
||||
|
||||
if keys.pressed(KeyCode::KeyW) {
|
||||
dir.y += 1.0;
|
||||
}
|
||||
if keys.pressed(KeyCode::KeyS) {
|
||||
dir.y -= 1.0;
|
||||
}
|
||||
if keys.pressed(KeyCode::KeyA) {
|
||||
dir.x -= 1.0;
|
||||
}
|
||||
if keys.pressed(KeyCode::KeyD) {
|
||||
dir.x += 1.0;
|
||||
}
|
||||
|
||||
dir.normalize_or_zero()
|
||||
}
|
||||
|
||||
pub fn kirby_player_move(
|
||||
keys: Res<ButtonInput<KeyCode>>,
|
||||
mut query: Query<(&mut PhysicsBody, &Kirby), With<Kirby>>,
|
||||
) {
|
||||
if keys.pressed(KeyCode::Space) {
|
||||
println!("SUCKING");
|
||||
}
|
||||
let dir = get_dir(keys);
|
||||
for (mut body, kirby) in &mut query {
|
||||
body.velocity = dir * kirby.move_speed;
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Component)]
|
||||
#[require(Sprite, Transform)]
|
||||
pub struct KirbySuction {
|
||||
box_size: Vec2,
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,15 +1,19 @@
|
|||
use bevy::prelude::*;
|
||||
use camera::spawn_camera;
|
||||
use kirby::kirby_input;
|
||||
use kirby::kirby_player_move;
|
||||
use kirby::kirby_spawn;
|
||||
use physics_body::integrate;
|
||||
|
||||
mod camera;
|
||||
mod kirby;
|
||||
mod physics_body;
|
||||
mod sphere_collider;
|
||||
|
||||
fn main() {
|
||||
App::new()
|
||||
.add_plugins(DefaultPlugins)
|
||||
.add_systems(Startup, spawn_camera)
|
||||
.add_systems(Startup, kirby_spawn)
|
||||
.add_systems(Update, kirby_input)
|
||||
.add_systems(FixedUpdate, (kirby_player_move, integrate).chain())
|
||||
.run();
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue