액터의 월드 좌표(World Space) 기준으로 위치를 변경한다.
FVector Offset(100.f, 0.f, 0.f); // X축 방향으로 100만큼 이동
MyActor->AddActorWorldOffset(Offset);
액터가 어떤 방향을 바라보고 있든 상관없이, 월드 좌표 기준 X축 방향으로 100만큼 이동한다.
액터의 로컬 좌표(Local Space) 기준으로 위치를 변경한다.
FVector Offset(100.f, 0.f, 0.f); // 로컬 X축 방향으로 100만큼 이동
MyActor->AddActorLocalOffset(Offset);
코드 상에서는 X축 기준으로 100만큼 이동하지만, 만약 액터가 90도 회전한 상태라면, 이 이동은 월드 좌표의 Y축 방향으로 100만큼 이동한다.
| 구분 | AddActorWorldOffset | AddActorLocalOffset |
|---|---|---|
| 기준 축 | 월드 좌표 (World Space) | 로컬 좌표 (Local Space) |
| 회전 영향 여부 | 액터의 회전 상태와 관계없음 | 액터의 회전 상태에 따라 이동 방향이 달라짐 |
| 사용 사례 | 절대적인 이동 경로가 필요한 경우 | 액터의 방향에 따라 상대적으로 이동이 필요한 경우 |
Sweep 매개변수를 지원하며, 이를 사용하면 이동 중에 충돌을 감지할 수 있다.FVector Offset(100.f, 0.f, 0.f);
FHitResult Hit;
MyActor->AddActorWorldOffset(Offset, true, &Hit);
Sweep 값을 true로 설정하면, 이동 중 충돌이 발생한 경우 이를 감지하고 Hit에 결과를 저장한다.
AddForce, SetVelocity)을 고려해야 한다.AddActorWorldOffset은 월드 좌표에서 이동해야 하는 경우에 유용하다.
예를 들어, 플레이어가 고정된 X축 방향으로 무조건 이동해야 하는 런닝 게임에서 사용할 수 있다.
void AMyCharacter::MoveForward(float DeltaTime)
{
FVector Offset(100.f * DeltaTime, 0.f, 0.f);
AddActorWorldOffset(Offset, true);
}
AddActorLocalOffset은 캐릭터가 바라보는 방향을 따라 이동해야 할 때 유용하다.
예를 들어, 비행기나 차량처럼 방향에 따라 이동 방향이 달라지는 경우 사용할 수 있다.
void AMyVehicle::DriveForward(float DeltaTime)
{
FVector Offset(100.f * DeltaTime, 0.f, 0.f);
AddActorLocalOffset(Offset, true);
}