Fly controller (#26)
This commit is contained in:
@@ -3,10 +3,7 @@ use crate::{
|
||||
alien::Animations,
|
||||
camera::{CameraArmRotation, CameraTarget},
|
||||
cash::{Cash, CashCollectEvent},
|
||||
control::{
|
||||
Controls,
|
||||
controller::{CharacterControllerBundle, MovementBundle, PlayerMovement},
|
||||
},
|
||||
control::controller_common::{CharacterControllerBundle, PlayerMovement},
|
||||
global_observer,
|
||||
head::ActiveHead,
|
||||
heads::HeadChanged,
|
||||
@@ -17,10 +14,7 @@ use crate::{
|
||||
sounds::PlaySound,
|
||||
tb_entities::SpawnPoint,
|
||||
};
|
||||
use avian3d::{
|
||||
math::{Scalar, Vector},
|
||||
prelude::*,
|
||||
};
|
||||
use avian3d::{math::Vector, prelude::*};
|
||||
use bevy::{
|
||||
input::common_conditions::input_just_pressed,
|
||||
prelude::*,
|
||||
@@ -55,11 +49,6 @@ pub fn plugin(app: &mut App) {
|
||||
.run_if(in_state(GameState::Playing)),
|
||||
);
|
||||
|
||||
app.add_systems(
|
||||
Update,
|
||||
(rotate_view_keyboard, rotate_view_gamepad).run_if(in_state(GameState::Playing)),
|
||||
);
|
||||
|
||||
global_observer!(app, on_update_head);
|
||||
}
|
||||
|
||||
@@ -80,9 +69,6 @@ fn spawn(
|
||||
|
||||
let gravity = Vector::NEG_Y * 40.0;
|
||||
let collider = Collider::capsule(0.9, 1.2);
|
||||
let acceleration = 30.0 * 60.;
|
||||
let jump_impulse = 18.0;
|
||||
let max_slope_angle = (60.0 as Scalar).to_radians();
|
||||
|
||||
commands
|
||||
.spawn((
|
||||
@@ -95,11 +81,7 @@ fn spawn(
|
||||
Visibility::default(),
|
||||
// LockedAxes::ROTATION_LOCKED, todo
|
||||
CollisionLayers::new(LayerMask(GameLayer::Player.to_bits()), LayerMask::ALL),
|
||||
CharacterControllerBundle::new(
|
||||
collider,
|
||||
gravity,
|
||||
MovementBundle::new(acceleration, jump_impulse, max_slope_angle),
|
||||
),
|
||||
CharacterControllerBundle::new(collider, gravity),
|
||||
))
|
||||
.with_children(|parent| {
|
||||
parent
|
||||
@@ -127,38 +109,6 @@ fn spawn(
|
||||
));
|
||||
}
|
||||
|
||||
fn rotate_view_gamepad(
|
||||
controls: Res<Controls>,
|
||||
mut player: Query<&mut Transform, With<PlayerBodyMesh>>,
|
||||
) {
|
||||
let Some(gamepad) = controls.gamepad_state else {
|
||||
return;
|
||||
};
|
||||
|
||||
if gamepad.view_mode {
|
||||
return;
|
||||
}
|
||||
|
||||
for mut tr in &mut player {
|
||||
tr.rotate_y(gamepad.look_dir.x * -0.001);
|
||||
}
|
||||
}
|
||||
|
||||
fn rotate_view_keyboard(
|
||||
mut controls: ResMut<Controls>,
|
||||
mut player: Query<&mut Transform, With<PlayerBodyMesh>>,
|
||||
) {
|
||||
if controls.keyboard_state.view_mode {
|
||||
return;
|
||||
}
|
||||
|
||||
for mut tr in &mut player {
|
||||
tr.rotate_y(controls.keyboard_state.look_dir.x * -0.001);
|
||||
}
|
||||
|
||||
controls.keyboard_state.look_dir = Vec2::ZERO;
|
||||
}
|
||||
|
||||
fn cursor_recenter(mut q_windows: Query<&mut Window, With<PrimaryWindow>>) {
|
||||
let mut primary_window = q_windows.single_mut();
|
||||
let center = Vec2::new(primary_window.width() / 2.0, primary_window.height() / 2.0);
|
||||
|
||||
Reference in New Issue
Block a user