Blockbuster 767
README.md
flight
The toy 767's controls: steer (pitch and bank), boost, dive, launch, pause.
Five controls, each bound for keyboard, gamepad and touch, and each doing two jobs depending on the state the game is in:
| Control | On the launcher (wind) | In the air (flight) |
|---|---|---|
steer (axis2) | trims heading (x) and elevation (y) | banks (x) and pitches (y) |
launch (button) | held to wind the key, released to throw | — |
boost (button) | steps the called shot FORWARD through the standing landmarks | thrust, while boost fuel lasts |
brake (button) | steps the called shot BACK | airbrake: the wings stop carrying |
menu (button) | raises the pause card | raises the pause card |
Stick forward (+y) pushes the nose DOWN on every device, on the launcher and in the air alike — the convention the how-to card states.
The touch overlay's margin
inputSim layout reads the four buttons at cx = 984, r = 72 on a 1080-wide
screen (right edge 1056) and the bottom one at cy = 1344 (bottom edge 1416 of
1440) — a 24 px margin at both, inside Rules.LAYOUT.safeInset × 1080 = 37.8 px.
That 24 px is the engine's, not this map's. The overlay lays its buttons out
from a fixed inset in @builtin::modules.zinput.touchControls, and
B.touchButton accepts only zone, label, icon, priority, size and
group — none of which move a button or change the inset. The same layout also
draws every button at the LARGEST live button's radius, so the small on
menu and the medium on boost / brake render at the large 72 as well
(OrigoZero/zero#11845). Nothing this map can declare brings the column inside
the safe inset; when the engine grows a lever for it, the four buttons want
about 14 px more clearance on both edges.