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 |