feat(app): slow default fly speed and add Shift-boost
The user noted that the previous 35 u/s default felt too fast for exploring scenery — overshooting buildings and skipping past entities constantly. Drop default to 12 u/s (≈AC's run speed), and bind Shift to a 50 u/s boost for fast travel between landblocks. Backwards compatible: the new boost parameter on FlyCamera.Update has a default of false, so any existing caller behaves the same. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
a538183caa
commit
979802c49c
2 changed files with 13 additions and 4 deletions
|
|
@ -11,7 +11,14 @@ public sealed class FlyCamera : ICamera
|
|||
public float FovY { get; set; } = MathF.PI / 3f;
|
||||
public float Aspect { get; set; } = 16f / 9f;
|
||||
|
||||
public float MoveSpeed { get; set; } = 35f; // world units per second (AC cell size = 24)
|
||||
/// <summary>
|
||||
/// Default move speed in world units per second. AC's character walks
|
||||
/// at ~4 u/s and runs at ~7 u/s; 12 here is comfortable for navigating
|
||||
/// scenery without overshooting and roughly tracks a fast jog. Hold
|
||||
/// shift while moving to enter "boost" mode at <see cref="BoostSpeed"/>.
|
||||
/// </summary>
|
||||
public float MoveSpeed { get; set; } = 12f;
|
||||
public float BoostSpeed { get; set; } = 50f;
|
||||
public float MouseSensitivity { get; set; } = 0.003f;
|
||||
|
||||
private const float PitchLimit = 1.5533f; // ~89 degrees
|
||||
|
|
@ -33,9 +40,10 @@ public sealed class FlyCamera : ICamera
|
|||
/// W/S move forward/back in the horizontal plane (ignoring pitch).
|
||||
/// A/D strafe left/right. Up/down translate along world Z.
|
||||
/// </summary>
|
||||
public void Update(double dt, bool w, bool a, bool s, bool d, bool up, bool down)
|
||||
public void Update(double dt, bool w, bool a, bool s, bool d, bool up, bool down, bool boost = false)
|
||||
{
|
||||
float step = (float)(MoveSpeed * dt);
|
||||
float speed = boost ? BoostSpeed : MoveSpeed;
|
||||
float step = (float)(speed * dt);
|
||||
|
||||
// Forward in the horizontal plane (ignore pitch so W doesn't dive into ground).
|
||||
var flatForward = new Vector3(MathF.Cos(Yaw), MathF.Sin(Yaw), 0f);
|
||||
|
|
|
|||
|
|
@ -1003,7 +1003,8 @@ public sealed class GameWindow : IDisposable
|
|||
s: kb.IsKeyPressed(Key.S),
|
||||
d: kb.IsKeyPressed(Key.D),
|
||||
up: kb.IsKeyPressed(Key.Space),
|
||||
down: kb.IsKeyPressed(Key.ControlLeft));
|
||||
down: kb.IsKeyPressed(Key.ControlLeft),
|
||||
boost: kb.IsKeyPressed(Key.ShiftLeft) || kb.IsKeyPressed(Key.ShiftRight));
|
||||
}
|
||||
|
||||
private void OnCameraModeChanged(bool isFlyMode)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue