"Input.config and AnalogMove for a new game"
Input.AnalogMovestays zero despite WASD.- New action in
Input.confignever firesInput.Pressed("MyAction")even thoughdotnet buildis green. - Gamepad bumpers don't bind with
LeftShoulder/RightShouldernames.
ProjectSettings/Input.config is a JSON list of actions. WASD only feeds Input.AnalogMove when actions are named Forward / Backward / Left / Right.
New actions do not register until the editor restarts (or at least a full Play restart that reloads the action list) — headless compile success does not reload bindings.
Schema
Each entry: { Name, GroupName, Title, KeyboardCode, GamepadCode }.
Input.Pressed/Down/Released("name")— case-insensitive; underscores must match.Input.MouseWheelis aVector2;Mouse.Positionis pixels; useScreen.Width/Heightfor math.
Project-standard set
Movement (Forward/Backward/Left/Right) + Run + Jump, Interact (F), Attack1/2 (mouse), Slot1–9, plus game-specific (Build, Admin, …).
Gamepad codes that work
Verified strings include: "A", "B", "X", "Y", "LeftTrigger", "RightTrigger", "LeftJoystickButton", "RightJoystickButton", "DpadNorth" / South / East / West, "None".
Bumpers: "SwitchLeftBumper" / "SwitchRightBumper" — not LeftShoulder / RightShoulder. Menu: "SwitchLeftMenu" / "SwitchRightMenu".
Optional: Input.UsingController exists for pad-only feel gates. Prefer engine ConVars for user look sensitivity — don't override ControllerLookPitchSpeed / ControllerLookYawSpeed from game code.
After editing Input.config
Restart the editor (or fully reload so the action list refreshes). Then Play-test the new binds.
Wish-dir pattern once AnalogMove works:
var wish = Rotation.FromYaw(cameraYaw)
* new Vector3(Input.AnalogMove.x, Input.AnalogMove.y, 0);AnalogMove is a derived stick built from specifically named digital actions — rename them and the vector dies. The input action table is loaded with the editor session, not with every hotload, so new names need a restart to appear.