학습일지/언리얼

Unreal - Actor 이동, 회전 등

Tsukino Ren 2026. 4. 9. 23:55

MovingActor - 왕복 이동 로직

DeltaTime 기반 이동

FVector Move = Velocity * DeltaTime;
 
  • 프레임 독립적인 이동 구현
  • FPS가 달라도 동일한 이동 거리 보장

방향 전환 - 왕복 이동

 
float Distance = FVector::Dist(StartLocation, GetActorLocation());

if (Distance >= MaxRange)
{
bMovingForward = !bMovingForward;
}
 

핵심 포인트

  • 시작 위치 기준 거리 계산
  • bool 하나로 상태 전환
  • "속도 방향을 바꾸는 게 아니라 이동 방향을 뒤집는다"

상태(bool) + 거리 조건 → 행동 변경


RotatingActor - 회전 + 이동 결합

회전 처리

AddActorLocalRotation(RotationSpeed * DeltaTime);
 
  • 로컬 기준 회전
  • 지속 회전 Actor 구현

이동 + 회전 동시 처리

  • Tick에서 둘 다 수행
  • 구조적으로 완전히 독립
Rotation 위치 이동 거리 체크

핵심 포인트

  • 이동 로직 재사용 (MovingActor 패턴)
  • 회전과 이동은 서로 간섭 없음

"기능은 합치되, 로직은 분리한다"


HiddenActor - 주기적 상태 토글

Timer 기반 실행

GetWorld()->GetTimerManager().SetTimer(
HideTimerHandle,
this,
&AHiddenActor::ToggleHideActor,
5.0f,
true
);
 
  • 5초마다 함수 반복 실행
  • Tick이 아닌 이벤트 기반 처리

상태 토글

if (bHidden)
{
SetActorHiddenInGame(false);
SetActorEnableCollision(true);
}
else
{
SetActorHiddenInGame(true);
SetActorEnableCollision(false);
}

 

핵심 포인트

  • 렌더링 + 충돌 동시에 제어
  • bool 하나로 상태 관리

"보이는 것"과 "상호작용"은 별개로 제어해야 한다


공통 설계 패턴 정리

상태 기반 제어

bool bMovingForward;
bool bHidden;
 
  • Actor의 행동은 상태에 의해 결정됨
  • if 분기로 명확하게 관리

DeltaTime 사용

Velocity * DeltaTime

Tick vs Timer

방식용도
Tick 매 프레임 실행 (이동, 회전)
Timer 일정 시간 이벤트 (숨김, 스폰 등)

구현 한것

  • 이동 Actor (왕복 이동)
  • 회전 + 이동 Actor
  • 일정 시간마다 사라졌다 나타나는 Actor
  • Timer 기반 상태 제어 구현

마무리

Actor의 움직임은 "상태(bool) + 시간(DeltaTime/Timer)"으로 제어 하는것이 좋다는 것을 알았다.

'학습일지 > 언리얼' 카테고리의 다른 글

Unreal - Pawn 클래스 과제  (0) 2026.04.14
Unreal - UBT, UHT, CDO, 리플렉션  (0) 2026.04.10
Unreal - UFUNCTION / UPROPERTY  (0) 2026.04.08
Unreal - Life Cycle  (0) 2026.04.07
Unreal C++ Actor 이동 / 로그 / 구조  (0) 2026.03.25