Controls

In short

Mouse aims. Space, left click or gamepad A swings. A/D and W/S held at contact aim the hit. The swing button also skips replays and dead time. Esc pauses. In the batting cage, Tab changes the pitch and M changes the park. The HUD shows the hints: MOUSE AIM, SPACE / CLICK SWING, A/D W/S AIM HIT, ESC PAUSE.

How it works

Batting

InputWhat it does
MouseMoves the aim helper (its sweet spot) on the plate (clamped to x +/-0.7 m, height 0.1 to 1.6 m). Speed set by AIM SPEED
Space / left click / gamepad ASwings, once per pitch, only after the ball is released and not while paused
A / D (left / right arrow)Held at contact: aims the hit up to 15 degrees toward left field (PULL) / right field (OPPO), and which way it curves
W / S (up / down arrow)Held at contact: W (LIFT) higher launch odds, x0.94 power; S (DRIVE) lower launch odds, x1.05 power
Gamepad left stickSame as A/D and W/S, partly tilted for part of the effect
EscPauses or resumes (only in an at-bat)

The swing is timestamped: the game uses the moment the button went down, not the frame it was noticed. The held direction is read at the moment of contact. A box above the key hints lights the held direction (PULL / NORMAL / OPPO, DRIVE / NORMAL / LIFT). See Swing and Timing and Batting Explained.

While batting the cursor is hidden and confined to the window (in builds on Windows and Linux), so aiming at an edge can’t click another app.

Skipping

The swing button also skips. See Skipping dead time.

  • Waits (before the first pitch, after a play, between pitches, end of round): one press skips every wait up to the next pitch.
  • Ball flight: jumps to where the ball comes to rest. A home run can be skipped only after 0.5 s of flight.
  • Home run total: hurries the score into the score panel.
  • Instant replay: ends it (“SPACE / CLICK TO SKIP”). In a big-moment replay one press skips both the close-up and the tracer shot. The press that made the swing can’t skip its own replay. See Hit Show.
  • Cutscenes: see Cutscenes.
  • Run over screen: Space or a click on the panel fills both bars at once.

Pause

  • Esc toggles pause in an at-bat (Time.timeScale = 0). Losing window focus (alt-tab) also pauses.
  • The pause menu: RESUME, the settings (MUSIC, SOUND, AIM SPEED, TIMING RING, FPS COUNTER, CUTSCENES, REPLAYS, display options), then SAVE & QUIT TO MENU (when the run can be saved; it resumes from the map checkpoint) and ABANDON RUN (solo) or LEAVE GAME (co-op).
  • In the batting cage the pause menu also has PITCH: …, PARK: … and LEAVE CAGE.
  • If the dev menu is open, Esc closes it first.

Batting cage

KeyWhat it does
TabNext pitch: Mixed, then each pitch type, then Mixed again. Restarts the session
MNext ballpark (wraps round). Rebuilds the field

Both are ignored while paused (use the pause menu buttons instead). See Batting Cage.

  • Esc closes an open popup (perks, settings, cage parks) on lobby-style screens.
  • Customize screen: arrow keys or WASD pan the camera, the scroll wheel zooms over the stage, Esc goes back to the main menu. See Customization.

Developer keys

F1 (dev menu), Ctrl+Shift+F (Fit Mode on the Customize screen) and Ctrl+Shift+N (network test on the main menu) are developer tools. See Dev Menu and Shortcuts and Fit Mode.

Numbers

WhatValueWhere to tune
Swing bindings<Keyboard>/space, <Mouse>/leftButton, <Gamepad>/buttonSouthSwingInput.EnsureAction
Press time rewindat most one frameSwingInput.OnSwing
Aim clampx -0.7 to 0.7 m, y 0.1 to 1.6 mSwingInput.ReadAim
AIM SPEED0.5x to 2.5x, steps of 0.05, default 1xSettingsView.MinAimSensitivity, MaxAimSensitivity; GameSettings.aimSensitivity
TIMING RINGoff by defaultGameSettings.showTimingRing
REPLAYSon by default (big-moment replay only)GameSettings.noReplays
Hit aim keysA, D, W, S and the arrow keys: all or nothingSwingInput.ReadHitAim
Stick deadzone (hit aim)0.3; W/S full effect by 0.8 tiltSwingInput.StickDeadzone, HitTables.HeightAmount
Home run skip delay0.5 sAtBatController.MinHomeRunFlightSeconds

In the code

FileWhat it does
Assets/_Project/Scripts/Batting/SwingInput.csSwing action (Input System), PressTime, ReadAim, ReadHitAim
Assets/_Project/Scripts/UI/HudView.csKey hints and the held-aim box
Assets/_Project/Scripts/Batting/AtBatController.csSkipPressed, SkippableWait, flight skip
Assets/_Project/Scripts/Batting/InstantReplay.csReplay skip
Assets/_Project/Scripts/UI/UIRoot.csEsc pause, focus pause, cursor confine, pause menu
Assets/_Project/Scripts/Modes/BattingCage.csTab and M
Assets/_Project/Scripts/UI/SettingsView.csAIM SPEED and TIMING RING

Gotchas

  • Swing and skip share one button. A press during dead time skips; a press during the windup (before release) does nothing.
  • A gamepad can swing, skip and aim the hit (left stick) but cannot move the aim helper or pause.
  • A/D and W/S count only at the moment of contact; before that they just light the held-aim box. A way-early or way-late (foul-timed) swing ignores A/D.
  • The README controls line still says “mouse = aim the contact ring” and doesn’t mention A/D or W/S.
  • Tab and M use the old Input class, which works because project input handling is set to Both.
  • The cage HUD hint reads “ESC to leave”, but Esc opens the pause menu; leaving is the LEAVE CAGE button there.
  • The README controls line mentions Tab in the cage but not M.
  • The Editor’s Game view does not confine the cursor; builds do.