Skip to content

Add Movement Input

At a glance

Lives in: Blueprint API / Pawn / Input - Target: Pawn - Inputs: World Direction, Scale Value, Force - Outputs: exec only - Returns: nothing - Common surprise: Scale Value is input strength, not movement speed - Official docs: Add Movement Input

Add Movement Input tells a pawn, "add this movement request for the current update." It does not teleport, set velocity, choose an animation, or set the Character's top speed.

For a normal Character, the Character Movement Component consumes that input and moves the capsule for you. For a plain Pawn, Unreal stores the input, but your pawn or movement component has to decide how to use it.

The short version

  • Call Add Movement Input on the pawn you want to move, usually Self inside your player Character.
  • World Direction is a world-space direction, not automatically local "forward" or "right."
  • Scale Value multiplies that direction. 1 means full input in that direction; 0.5 means half strength; -1 means the opposite direction.
  • It does not set speed. Speed usually comes from movement component settings such as Max Walk Speed, Acceleration, friction, braking, and movement mode.
  • Multiple calls in one frame combine. Forward plus right becomes diagonal input for that movement update.
  • Force only bypasses movement-input ignoring. It does not force through walls, physics, invalid possession, or missing movement code.

What the node actually does

Think of Add Movement Input as adding to a pending input vector:

pseudocode - not engine source

Add Movement Input(WorldDirection, ScaleValue):
    if pawn is ignoring move input and Force is false:
        do not add this input

    pending movement input += normalized-ish WorldDirection * ScaleValue

Later, during movement update, the pawn or its movement component consumes that pending vector and resets it so the next frame starts fresh.

That is why the node can fire and still not visibly move anything. The call is only the request. Something still has to consume the request and turn it into movement.

The pins

Pin What it means Beginner trap
Target The pawn that receives the input request. Moving the wrong pawn, or a None reference, changes nothing useful.
World Direction Direction in world space. Usually normalized before use. Actor-forward, camera-forward, and controller-forward can be different directions.
Scale Value Strength and sign of this input request. It is not "speed." -1 reverses the direction.
Force Add input even if move input is currently ignored. It does not bypass collision, possession, movement mode, or network authority.

Character vs Pawn

Most beginner projects use Character, not raw Pawn.

Character
-> already has a Character Movement Component
-> Add Movement Input is consumed automatically during movement
-> capsule moves if input, possession, movement mode, and collision allow it

DefaultPawn
-> has built-in pawn movement behavior
-> Add Movement Input is handled automatically

Plain Pawn
-> can receive Add Movement Input
-> does not automatically turn that input into movement
-> needs custom Tick logic or a Pawn Movement Component that consumes input

If you made a Blueprint based directly on Pawn and expected it to walk like the Third Person template, this is the likely missing piece. Either use Character for a humanoid walking character, use a suitable movement component, or write the movement update yourself.

World direction vs local direction

The pin says World Direction because Unreal expects a direction in the level's coordinate space. The node does not guess which local direction you meant.

If you want actor-relative tank movement:

MoveForward input value
-> Get Actor Forward Vector
-> Add Movement Input
   World Direction = Actor Forward Vector
   Scale Value = input value

If you want camera-relative third-person movement:

Move input
-> Get Controller
-> Get Control Rotation
-> make a rotator with Pitch = 0, Roll = 0, Yaw = Control Rotation Yaw
-> Get Forward Vector from that yaw rotator
-> Get Right Vector from that yaw rotator
-> Add Movement Input forward with Y value
-> Add Movement Input right with X value

The yaw-only step matters. If you use the camera's full pitch while walking on the ground, looking up can push the desired direction partly upward and looking down can push it partly into the floor. Ground movement often ignores that vertical part later, but the graph becomes much harder to reason about.

Scale Value is not speed

Scale Value scales this input request. It is best read as "how much of this direction is the player asking for right now?"

Common values:

Scale Value Meaning
1.0 Full strength in World Direction.
0.5 Half-strength analog input.
0.0 No useful input from this call.
-1.0 Full strength opposite World Direction.

For keyboard WASD, your values are usually 1, 0, or -1. For a gamepad stick, the values can be between those numbers.

To change how fast a Character moves, tune the Character Movement Component. For walking, the first values beginners usually check are Max Walk Speed, Acceleration, Braking Deceleration Walking, Ground Friction, and the current movement mode.

Enhanced Input shape

With Enhanced Input, a common move action uses a 2D Axis value:

IA_Move Triggered
-> Get Action Value
-> convert/read as Vector2D
-> X = right/left input
-> Y = forward/back input

Controller yaw -> right vector
Controller yaw -> forward vector

Add Movement Input (World Direction = forward, Scale Value = Y)
Add Movement Input (World Direction = right, Scale Value = X)

Enhanced Input decides how keys, sticks, modifiers, and triggers become the axis value. Add Movement Input is still the final movement request sent to the pawn.

Why diagonal movement usually does not become twice as fast

Beginners often see two calls and worry that W+D means "full forward plus full right, so twice the speed." With Character, Character Movement treats the combined input as acceleration and clamps/tunes motion according to the movement component's rules.

That does not mean every custom pawn is safe. If you write your own raw Pawn Tick movement and simply add unnormalized forward and right vectors into SetActorLocation, you can accidentally create faster diagonal motion. That is your custom movement math, not Add Movement Input by itself.

When the node fires but the character does not move

  1. The input event is not firing. Print the axis value or action value before this node. A UI input mode, missing mapping context, wrong input action, or disabled input can stop the graph before movement starts.
  2. The target is not the pawn you are controlling. Inside your Character, use Self first. From another Blueprint, pass a real reference to the possessed pawn.
  3. The pawn is not possessed. Player movement input normally reaches the pawn through its controller. If there is no controller, your input graph may not run on the body you are watching.
  4. Move input is being ignored. Set Ignore Move Input, some menu flows, and custom controller logic can block movement input. Force bypasses this one gate, but it is usually better to fix the stuck ignore state.
  5. You used a raw Pawn with no movement implementation. Base Pawn stores the input; it does not automatically walk.
  6. The direction is zero or wrong. A zero vector, uninitialized controller, or using actor forward when you wanted camera forward can make movement look broken.
  7. The movement mode blocks the result. A Character in an unexpected movement mode, constrained plane, disabled movement component, or blocked collision path may reject or limit the movement.
  8. You are changing only the client in multiplayer. CharacterMovement has prediction, but the server is authoritative. Client-only movement hacks can be corrected back by the server.

Force is narrow

The Force pin means "add the movement input even if this pawn/controller says move input is ignored." That is useful for special cases such as a scripted push or a system-level move request that should not respect a temporary input lock.

It does not mean:

  • force the Character through blocking collision;
  • force a None target to move;
  • force a raw Pawn to implement movement;
  • force input events to fire;
  • force the server to accept a client's local-only movement.

If Force = true appears to fix a menu or pause bug, check whether you forgot to restore input mode or unwind a stacked Set Ignore Move Input call.

Lookalikes

Node or setting Use when Not the same as
Add Movement Input A pawn should request movement in a direction. Setting speed, teleporting, or choosing facing.
Add Controller Yaw Input Player look/turn input should change controller yaw. Moving the pawn through the world.
Add Input Vector You are working directly with a Pawn Movement Component. The higher-level Pawn node.
Set Actor Location You are manually placing an actor at a location. Character walking with movement mode, acceleration, and collision behavior.
Launch Character You want an impulse-like launch or knockback on a Character. Normal held movement input.
Add Force / Add Impulse A simulating physics body should receive a physics force. Character input movement.
AI Move To An AIController should pathfind to a destination. Player movement input.
Get Last Movement Input Vector You need the last consumed input direction, often for animation. Current velocity or current speed.

Going deeper