added jellyfishes player_movement
This commit is contained in:
parent
9c06791a1c
commit
73f85a8d0d
@ -16,4 +16,7 @@ pub struct Health{
|
|||||||
pub struct Inventory{
|
pub struct Inventory{
|
||||||
pub items: Vec<Entity>,
|
pub items: Vec<Entity>,
|
||||||
pub max_size: u32,
|
pub max_size: u32,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[derive(Component, Debug)]
|
||||||
|
pub struct Speed(pub f32);
|
||||||
|
|||||||
@ -4,10 +4,10 @@ pub mod systems;
|
|||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
App::new()
|
App::new()
|
||||||
.insert_resource(ClearColor(Color::srgb(1.0, 1.0, 1.0)))
|
|
||||||
.add_plugins(DefaultPlugins)
|
.add_plugins(DefaultPlugins)
|
||||||
.add_systems(Startup, (setup, systems::player::spawn_player))
|
.insert_resource(Time::<Fixed>::from_hz(60.0))
|
||||||
.add_systems(Update, systems::debug::debug_player_components)
|
.add_systems(Startup, (setup, systems::player::spawn_player, systems::wolf::spawn_wolf))
|
||||||
|
.add_systems(FixedUpdate, (systems::player::camera_lock, systems::player::player_movement))
|
||||||
.run();
|
.run();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
use bevy::prelude::*;
|
use bevy::prelude::*;
|
||||||
use crate::components::entity::{Level, Xp, Health, Inventory};
|
use crate::components::entity::{Level, Xp, Health, Inventory};
|
||||||
|
|
||||||
pub fn debug_player_components(
|
pub fn debug_entity_components(
|
||||||
query: Query<(Entity, &Level, &Xp, &Health, &Inventory)>,
|
query: Query<(Entity, &Level, &Xp, &Health, &Inventory)>,
|
||||||
) {
|
) {
|
||||||
for (entity, level, xp, health, inv) in query.iter() {
|
for (entity, level, xp, health, inv) in query.iter() {
|
||||||
|
|||||||
@ -1,2 +1,3 @@
|
|||||||
pub mod player;
|
pub mod player;
|
||||||
pub mod debug;
|
pub mod debug;
|
||||||
|
pub mod wolf;
|
||||||
@ -1,5 +1,8 @@
|
|||||||
use bevy::prelude::*;
|
use bevy::prelude::*;
|
||||||
use crate::components::entity::{Level, Xp, Health, Inventory};
|
use crate::components::entity::{Level, Xp, Health, Inventory, Speed};
|
||||||
|
|
||||||
|
#[derive(Component)]
|
||||||
|
pub struct Player;
|
||||||
|
|
||||||
pub fn spawn_player(mut commands: Commands, mut meshes: ResMut<Assets<Mesh>>, mut materials: ResMut<Assets<ColorMaterial>>) {
|
pub fn spawn_player(mut commands: Commands, mut meshes: ResMut<Assets<Mesh>>, mut materials: ResMut<Assets<ColorMaterial>>) {
|
||||||
let player_mesh = meshes.add(Capsule2d::new(25.0, 50.0));
|
let player_mesh = meshes.add(Capsule2d::new(25.0, 50.0));
|
||||||
@ -11,5 +14,39 @@ pub fn spawn_player(mut commands: Commands, mut meshes: ResMut<Assets<Mesh>>, mu
|
|||||||
Level(1),
|
Level(1),
|
||||||
Xp(0),
|
Xp(0),
|
||||||
Health{current: 10, max: 10},
|
Health{current: 10, max: 10},
|
||||||
Inventory {items: Vec::new(), max_size: 10},));
|
Inventory {items: Vec::new(), max_size: 10},
|
||||||
|
Speed(100.0),
|
||||||
|
Player,));
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn camera_lock(
|
||||||
|
camera_query: Single<(&Camera, &mut Transform),
|
||||||
|
Without<Player>>, player_query: Single<(&Player, &Transform)> ) {
|
||||||
|
let (_, mut camera_pos) = camera_query.into_inner();
|
||||||
|
let (_, player_pos) = player_query.into_inner();
|
||||||
|
camera_pos.translation = player_pos.translation;
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn player_movement(
|
||||||
|
keyboard_input: Res<ButtonInput<KeyCode>>,
|
||||||
|
time: Res<Time>,
|
||||||
|
player_query: Single<(&Player, &mut Transform, &Speed)>) {
|
||||||
|
let (_player, mut transform, speed) = player_query.into_inner();
|
||||||
|
let mut translation_delta : Vec3 = Vec3::ZERO;
|
||||||
|
if keyboard_input.pressed(KeyCode::KeyW) {
|
||||||
|
translation_delta.y += 1.0;
|
||||||
|
}
|
||||||
|
if keyboard_input.pressed(KeyCode::KeyS) {
|
||||||
|
translation_delta.y -= 1.0;
|
||||||
|
}
|
||||||
|
if keyboard_input.pressed(KeyCode::KeyA) {
|
||||||
|
translation_delta.x -= 1.0;
|
||||||
|
}
|
||||||
|
if keyboard_input.pressed(KeyCode::KeyD) {
|
||||||
|
translation_delta.x += 1.0;
|
||||||
|
}
|
||||||
|
|
||||||
|
translation_delta *= speed.0 * time.delta_secs();
|
||||||
|
|
||||||
|
transform.translation += translation_delta;
|
||||||
}
|
}
|
||||||
15
src/systems/wolf.rs
Normal file
15
src/systems/wolf.rs
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
use bevy::prelude::*;
|
||||||
|
use crate::components::entity::{Level, Xp, Health, Inventory};
|
||||||
|
|
||||||
|
pub fn spawn_wolf(mut commands: Commands, mut meshes: ResMut<Assets<Mesh>>, mut materials: ResMut<Assets<ColorMaterial>>) {
|
||||||
|
let wolf_mesh = meshes.add(Rhombus::new(75.0, 100.0));
|
||||||
|
let color = Color::hsl(360. * 6 as f32 / 10 as f32, 0.95, 0.7);
|
||||||
|
commands.spawn( (
|
||||||
|
Mesh2d(wolf_mesh),
|
||||||
|
MeshMaterial2d(materials.add(color)),
|
||||||
|
Transform::from_xyz(300.0, 0.0, 0.0),
|
||||||
|
Level(1),
|
||||||
|
Xp(0),
|
||||||
|
Health{current: 30, max: 30},
|
||||||
|
Inventory {items: Vec::new(), max_size: 10},));
|
||||||
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user