fencing_controls.inputMap
The piste scheme for a 2.5D fence duel: footwork along one axis plus four mutually-exclusive commitments and a call for the next bout. Extends `default`, so everything the built-in scheme binds stays bound.
fencing_controls
The piste scheme for a 2.5D fence duel: footwork along one axis plus four
mutually-exclusive commitments and a call for the next bout. Extends default,
so everything the built-in scheme binds stays bound.
Footwork rides the canonical move axis rather than a new one, which is what
makes advance and retreat work on keyboard, gamepad and touch without a second
binding: only the axis's X component is read.
Actions this map adds
| Action | kbm | touch |
|---|---|---|
lunge | KeyI, middle mouse | button, right-lower, group duel, priority 13 |
thrust | KeyJ, left mouse | button, right-lower, group duel, priority 10 |
sweep | KeyK, right mouse | button, right-lower, group duel, priority 11 |
parry | KeyL, Space | button, right-lower, group duel, priority 12 |
restart | KeyR, Enter | button, right-upper, group duel, priority 20 |
The four commitments sit under the right hand in the order they cost you: I
lunges the furthest and recovers the slowest, J thrusts, K sweeps, L or
Space holds the guard. They share the duel group so the touch overlay lays
them out adjacently as one cluster. restart sits apart, in right-upper,
because it is only live once the assize is decided.
Axes
None of its own — move comes from default.
Activation
Activated from the scene entrypoint on load:
local map = asset.resolve("fencing_controls", "inputMap")
if map ~= nil then map:activate() end
The four commitments and the move axis are read by the Fencer component on
a role = "player" fencer; restart is read by DuelMatch while the match is
over.
Scoped to this part · feeds back into the world's score.