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 Inputon the pawn you want to move, usuallySelfinside your player Character. World Directionis a world-space direction, not automatically local "forward" or "right."Scale Valuemultiplies that direction.1means full input in that direction;0.5means half strength;-1means 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.
Forceonly 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¶
- 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.
- The target is not the pawn you are controlling. Inside your Character,
use
Selffirst. From another Blueprint, pass a real reference to the possessed pawn. - 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.
- Move input is being ignored.
Set Ignore Move Input, some menu flows, and custom controller logic can block movement input.Forcebypasses this one gate, but it is usually better to fix the stuck ignore state. - You used a raw Pawn with no movement implementation. Base
Pawnstores the input; it does not automatically walk. - 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.
- The movement mode blocks the result. A
Characterin an unexpected movement mode, constrained plane, disabled movement component, or blocked collision path may reject or limit the movement. - You are changing only the client in multiplayer.
CharacterMovementhas 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
Nonetarget to move; - force a raw
Pawnto 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¶
- Why won't my character face where it's moving? - how movement input relates to body rotation.
- Possession - why an unpossessed pawn often does not receive the input you think it receives.
- Set Input Mode & Show Mouse Cursor - input-mode traps around menus and gameplay controls.
- Get Velocity - the value an Animation Blueprint usually reads after movement has happened.
- The frame: Tick, timers, and timelines - why movement input is a per-frame request, not a permanent command.
- Official docs: Add Movement Input, Consume Movement Input Vector, Add Input Vector, APawn, UCharacterMovementComponent, Input Overview, and Set Ignore Move Input.
- Engine source (requires engine access - we do not reproduce it here):
APawn::AddMovementInput,APawn::Internal_AddMovementInput,APawn::ConsumeMovementInputVector, and related pending-input helpers inEngine/Source/Runtime/Engine/Private/Pawn.cppandEngine/Source/Runtime/Engine/Classes/GameFramework/Pawn.h;UPawnMovementComponent::AddInputVector,UPawnMovementComponent::ConsumeInputVector, and pending-input helpers inEngine/Source/Runtime/Engine/Private/Components/PawnMovementComponent.cppandEngine/Source/Runtime/Engine/Classes/GameFramework/PawnMovementComponent.h.