Set Actor Location / Rotation / Transform¶
At a glance
Lives in: Blueprint API / Transformation - Target: an Actor -
Moves: the actor through its root component - Common outputs:
Boolean Return Value and Sweep Hit Result on the location/transform
nodes - Can fail by: returning false or moving only partway when sweep
blocks movement - Official docs:
Set Actor Location,
Set Actor Transform
The one-minute version¶
Set Actor Location,Set Actor Rotation, andSet Actor Transformchange an actor's world transform by moving its root component.- Child components keep their relative offsets under the root. The node does not independently sweep every mesh, weapon, camera, or child component.
- Sweep asks Unreal to move toward the destination while checking blocking collision for the root component. If blocked, the actor can stop short and the hit result tells you what blocked it.
- Teleport controls physics velocity behavior. Teleporting keeps physics velocity as-is; non-teleport movement can update physics velocity based on the move.
- These nodes are not Character Movement, AI Move To, physics impulses, attachment, or level travel. They are direct transform setters.
- Use them for placement, teleports, simple scripted movement, and non-character actors. Use movement systems when you want pathing, acceleration, floor handling, or network prediction.
What they actually move¶
Actors do not store a visible shape by themselves. The actor's transform is driven by its root scene component.
pseudocode of the engine behavior - not engine source
function SetActorLocation(Actor, NewLocation, Sweep, Teleport):
Root = Actor.RootComponent
if Root is missing:
return false
result = move Root to NewLocation using Sweep/Teleport options
child components update from their relative offsets
return whether the move succeeded or moved at all
For a character, that usually means the capsule root moves and the mesh follows. For a door actor, it might mean a scene root moves while the door mesh stays offset under it. For a pickup with a static mesh as root, the mesh itself is the root.
If your mesh moves but collision stays behind, you probably moved a child mesh. If your actor moves but the visible art appears offset, inspect the child component's relative transform.
Location vs rotation vs transform¶
| Node | Changes | Use when |
|---|---|---|
| Set Actor Location | World position only | Teleport or place an actor at a new location. |
| Set Actor Rotation | World rotation only | Face or orient a non-character actor directly. |
| Set Actor Transform | Location, rotation, and scale together | Apply a saved/spawn transform or move a full placement in one value. |
| Get Actor Transform | Returns actor-to-world transform | Save, compare, spawn, or copy the current placement. |
Transform is just the bundle: location, rotation, and scale. If you only need
to move position, Set Actor Location is clearer. If you are copying a saved
spawn point or checkpoint transform, Set Actor Transform can be the right shape.
Sweep in plain English¶
Sweep means "try to move there, but check blocking collision along the path."
Set Actor Location
New Location = destination
Sweep = true
If root collision path is clear:
actor reaches destination
Return Value true
If root collision hits a blocking object:
actor stops at a valid spot before/at the hit
Return Value says whether movement occurred
Sweep Hit Result describes the blocker
Important beginner details:
- only the root component is swept for actor-level location/transform movement;
- child components move with the root but do not each perform independent sweep checks;
- if collision is disabled or the root has no blocking collision, sweep cannot stop the move in the way you may expect;
- sweep can trigger overlap updates along the path;
- sweep is not AI pathfinding. It does not plan around walls.
If you need "walk around the obstacle," use navigation or movement logic. If you need "do not teleport through a wall," sweep may be enough.
Teleport and physics¶
Teleport is about physics state, not visual instant-ness. All direct SetActor... calls move the actor immediately from the graph's point of view.
With Teleport true:
- physics velocity is preserved;
- ragdoll/physics parts are treated as teleported with their current velocity;
- attached children keep their offsets.
With Teleport false:
- Unreal may update physics velocity based on the positional change;
- continuous collision detection can consider the swept volume when relevant;
- simulated attached children may not be updated the same way as teleporting.
For normal gameplay teleports, set Teleport true. For scripted movement where physics response should notice the movement, test the specific actor and root component setup.
When it fails (and what failure does)¶
Failure usually means "the requested transform was not fully applied."
Common causes:
- Target is
None. No actor is moved. - No root component. Actor-level movement has nothing useful to move.
- Sweep blocked movement. The actor stops short and returns a hit result.
- Wrong root/collision. You swept a root that has no blocking collision, or you expected a child mesh to sweep.
- Character Movement or physics fights you next frame. A movement component, AI path following, attachment parent, or physics simulation can move the actor after your direct set.
- Networking authority is wrong. A client-side direct move can be corrected by the server for replicated characters/actors.
There is no hidden retry or path-around-obstacle behavior. Read the Return Value and Sweep Hit Result when Sweep matters.
The pattern everyone actually uses¶
Teleport a player to a checkpoint in single-player:
CheckpointActor
-> Get Actor Transform
PlayerCharacter
-> Set Actor Transform
New Transform = checkpoint transform
Sweep = false
Teleport = true
Move a door panel smoothly:
Timeline Update Alpha
-> Lerp closed relative rotation to open relative rotation
-> Set Relative Rotation on DoorPanel component
Notice the second example uses the component, not the actor. A door often wants one panel to rotate relative to its frame while the whole door actor stays put.
Place a spawned pickup:
Spawn Actor from Class BP_Pickup
-> Is Valid Return Value
-> Set Actor Location spawn point, Sweep true
-> if Return Value false:
choose fallback or destroy pickup
Lookalikes - which one do I want?¶
| Tool | Use when | Watch out |
|---|---|---|
| Set Actor Location/Rotation/Transform | Directly place or teleport an actor. | Movement systems can override/correct it. |
| Set World/Relative Location on Component | Move one component or offset a child part. | Does not move the whole actor unless that component is root. |
| Add Actor World Offset | Move relative to current actor position. | Same root/sweep concerns. |
| Character Movement / Add Movement Input | Player character should walk, fall, accelerate, and respect floor movement. | Direct SetActor calls bypass most movement-component behavior. |
| AI Move To | AI pawn should path through NavMesh. | SetActorLocation does not pathfind. |
| Add Impulse / Add Force | Physics body should be pushed by simulation. | Transform setting can fight physics. |
| Attach Actor To Component | Actor should follow a parent/socket. | Attachment is not the same as setting one world transform once. |
| Open Level | Move to another map/world. | Not an actor transform change. |
Rule of thumb: SetActor... is placement. Movement systems are behavior over time. Attachment is parent-child transform.
Going deeper¶
- World vs relative transforms
- actor/component transform spaces and parent offsets.
- Actor, Scene, and Primitive Components
- why the root component matters.
- Lerp, FInterp To, and moving things smoothly
- when direct setters are the last step of interpolation.
- Add Movement Input and Character Movement Component
- character movement alternatives.
- AI Move To & the NavMesh - pathfinding movement.
- Official docs: Set Actor Location, Set Actor Transform, Get Actor Transform, and AActor.
- Engine source (requires engine access - we do not reproduce it here):
AActor::K2_SetActorLocation,AActor::K2_SetActorRotation,AActor::K2_SetActorTransform,AActor::SetActorLocation, andAActor::SetActorTransforminEngine/Source/Runtime/Engine/Private/Actor.cpp; root component movement inUSceneComponent::MoveComponentunderEngine/Source/Runtime/Engine/Private/Components/SceneComponent.cpp.