在 Unreal Engine 的藍圖里,SetRelativeLocation
、SetWorldLocation
和 SetActorLocation
三個節點雖然都能改變物體位置,但作用對象和坐標空間(Coordinate Space)不同:
1. SetActorLocation
-
作用對象:整個 Actor(本質上是移動它的根組件 RootComponent)
-
坐標空間:世界空間(World Space)
-
典型用途:當你想直接把一個 Actor (比如一個敵人、道具、攝像機等)瞬間或平滑地移動到世界中的某個絕對坐標時,用這個節點。
-
參數要點:
-
New Location (Vector):目標世界坐標
-
Sweep? (Boolean):是否執行碰撞檢測(掃掠移動,防止穿透墻體)
-
Teleport? (Boolean):是否忽略物理(true:直接傳送,不觸發物理碰撞響應)
-
2. SetWorldLocation
-
作用對象:一個 Scene Component(場景組件),包括 Mesh、Collision、Camera、Particle 等
-
坐標空間:世界空間(World Space)
-
典型用途:當你只想移動某個組件(比如把武器的 Mesh、子彈發射點,或某個粒子特效)到世界坐標,而不動 Actor 其它組件時,用它。
-
注意:如果該組件被 Attach(附著)到父組件,上層父組件的世界變換依然會影響它。
3. SetRelativeLocation
-
作用對象:同樣是 Scene Component
-
坐標空間:相對空間(Local Space / Parent Space)
-
典型用途:當你想在組件的父對象(Actor Root 或其它父組件)本地坐標系下做偏移時用它。
-
例:把攝像機沿著角色的本地 Z 軸往后拉 50 單位,或把武器掛點在角色手部骨骼本地坐標系中上移 10 單位。
-
-
效果:組件位置會以父節點(Actor Root 或 Attach 父組件)的變換為基準來計算。
小結對比
節點 | 作用對象 | 坐標空間 | 何時用? |
---|---|---|---|
SetActorLocation | Actor(根組件) | 世界空間 | 整體移動 Actor 到世界指定坐標 |
SetWorldLocation | 組件(Scene Component) | 世界空間 | 單獨移動某個組件到世界指定坐標,不影響父級附著 |
SetRelativeLocation | 組件(Scene Component) | 相對/本地空間 | 在父組件坐標系下做局部偏移 |
Tip:
如果你對一個 Actor 下的某個組件做相對位置調整,一定要用
SetRelativeLocation
,否則直接用SetWorldLocation
可能會被父組件的旋轉、縮放影響,看起來“不聽話”。
SetActorLocation
內部其實也是調用根組件的SetWorldLocation
,但它額外處理了碰撞、導航、Actor 相關的事件(比如觸發OnActorBeginOverlap
)。三個節點都帶 Sweep/Teleport 參數,要注意選擇是否要碰撞檢測或物理行為。