Fix: apply steering input properly

The ship in Asteroids isn't expected to spin up while holding a steering
direction, but that's exactly what I just made it do.

Fix that problem by assigning, not accumulating, the angular velocity
for the ship.
This commit is contained in:
2025-08-09 16:09:54 -05:00
parent d4f11faf5a
commit 6191fde25a
3 changed files with 7 additions and 4 deletions

View File

@@ -13,6 +13,6 @@ pub(crate) const ASTEROID_SMALL_COLOR: Color = Color::srgb(1.0, 0., 0.);
// TODO: asteroid medium & large
pub(crate) const SHIP_THRUST: f32 = 1.0;
pub(crate) const SHIP_ROTATION: f32 = 0.1; // +/- rotation speed in... radians per frame
pub(crate) const SHIP_ROTATION: f32 = 4.0; // +/- rotation speed in... radians per frame
pub const RNG_SEED: [u8; 32] = *b"12345678909876543210123456789098";

View File

@@ -280,9 +280,11 @@ fn input_ship_rotation(
};
if keyboard_input.pressed(KeyCode::KeyA) {
angular_vel.0 += SHIP_ROTATION;
angular_vel.0 = SHIP_ROTATION;
} else if keyboard_input.pressed(KeyCode::KeyD) {
angular_vel.0 -= SHIP_ROTATION;
angular_vel.0 = -SHIP_ROTATION;
} else {
angular_vel.0 = 0.0;
}
}

View File

@@ -1,5 +1,6 @@
use crate::{
physics::{Velocity, Wrapping}, AngularVelocity, GameAssets
AngularVelocity, GameAssets,
physics::{Velocity, Wrapping},
};
use bevy::prelude::*;