Quick answer: Modifiers in an Input Mapping Context apply top-to-bottom. Order matters: Dead Zone first, then Negate, then Swizzle Axis, then Scalar.

A twin-stick shooter’s aim stick reads inverted on Y. The Negate modifier exists but a Swizzle above it scrambled which axis gets negated.

Pipeline Order

For each Input Action mapping, modifiers form a pipeline. Raw input enters the top; each modifier transforms; the result reaches your action.

Recommended order:

  1. Dead Zone — clean noise from raw input first.
  2. Negate — flip axes before reinterpreting them.
  3. Swizzle Input Axis Values — remap which axis is which.
  4. Scalar — sensitivity multiplier last.

Common Mistake

Swizzle before Negate: you negate the wrong axis. Negate before Swizzle: the negation follows the axis through the swizzle. Put Negate first if you mean “invert the physical Y stick”.

Per-Mapping vs Per-Action

Modifiers can live on the Input Mapping Context entry OR the Input Action asset. Context modifiers apply after action modifiers. Keep sensitivity on the action, axis remapping on the context.

Debug with Visualizer

Console: showdebug enhancedinput. Shows the raw value, each modifier’s output, and the final action value. Trace where it goes wrong.

Verifying

Aim stick: up is up, down is down. Sensitivity feels right. Test all four directions and diagonals.

“Modifiers are a pipeline. Dead Zone, Negate, Swizzle, Scalar — in that order, usually.”

Expose “Invert Y” as a player setting by toggling the Negate modifier’s presence at runtime via a custom Input Modifier subclass.