Actor 기본 흐름
- BeginPlay()
- 게임 시작 시 한 번 실행되는 함수이다
- Tick()
- 매 프레임 실행되는 함수이다
int StepCount;
int MaxSteps;
이번 과제는 반복 실행을 위해 Tick을 활영하였으며 StepCount로 횟수 제한을 했습니다.
FMath 활용하여 Actor 이동과 회전
이동
FVector NewLocation = GetActorLocation();
int RandomMove = FMath::RandRange(0, 2);
// 벡터 변수를 생성하고 현재 위치를 받아옴
if (RandomMove == 0)// X,Y,Z중 랜덤으로 선택 이동
{
NewLocation.X += Distance;
}
else if (RandomMove == 1)
{
NewLocation.Y += Distance;
}
else
{
NewLocation.Z += Distance;
}
SetActorLocation(NewLocation);
- FVector : 위치를 나타내는 구조체(X, Y, Z)
- FMath로 랜덤 0 ~ 2 사이중 랜덤하게 값을 정하였다
- 현재 위치를 가져와 값을 변경 후 다시 설정하였다.
회전
FRotator NewRotation = GetActorRotation();
int RandomTurn = FMath::RandRange(0, 2);
if (RandomTurn == 1)
{
NewRotation.Roll += Angle;
}
else if (RandomTurn == 2)
{
NewRotation.Yaw += Angle;
}
else
{
NewRotation.Pitch += Angle;
}
SetActorRotation(NewRotation);
- FRotator : 회전 값 (Pitch, Yawm Roll)
- Roll = X축을 기준으로 회전
- Pitch = Y축을 기준으로 회전
- Yaw = Z축을 기준으로 회전
출력 방식
화면 출력
FVector NewLocation = GetActorLocation();
FString LocationMsg = FString::Printf(
TEXT("[Step %d] 이동: X=%.1f Y=%.1f Z=%.1f"),
Step,
NewLocation.X,
NewLocation.Y,
NewLocation.Z
GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Green, LocationMsg);
- 게임 화면에 바로 출력한다.
콘솔 출력
UE_LOG(LogTemp, Warning, Text("Actor Moved"))
- Output Log 창에 출력한다.
함수 분리
void Move(float Distance);
void Turn(float Angle);
void PrintStatus(int Step) const;
void TriggerEvent();
- 기능별로 분류함에 따른 장점
- 코드의 가독성이 올라감
- 유지보수가 편함
- 함수의 역할이 명확함
이동 거리
float Distance = FVector::Dist(PrevLocation, CurrentLocation);
TotalDistance += Distance; // 이건 총 거리 합
- 이전 위치와 현재 위치 사이 거리 계산한다
- 누적해서 총 이동 거리를 변수에 저장한다
핵심 정리
과제로 사용한 Unreal C++ 개념 정리
- 위치 = FVector
- 회전 = FRotator
- 랜덤 = FMath
- 출력 = DebugMessage / UE_LOG
- 흐름 = BeginPlay / Tick
마무리
언리얼 API 사용에 있어서 처음이라 난이도가 어려웠다. 그래서 공식 문서와 AI를 활용하여 개념을 확인하면서 진행하니 조금은 할 수 있던것 같다. 모르면 하루종일 붙잡기 보단 10 ~ 30분 붙잡고 안되면 찾아보면서 반복 숙달하여 적응시키는게 맞는 것 같다.
아니면 말구..
https://github.com/whitealbum1226/HW05
'학습일지 > 언리얼' 카테고리의 다른 글
| Unreal - UFUNCTION / UPROPERTY (0) | 2026.04.08 |
|---|---|
| Unreal - Life Cycle (0) | 2026.04.07 |
| Git 협업 체험 해보기 / 상상 훈련...! (0) | 2026.03.23 |
| 스파르타클럽 내배캠 Unreal 8기 - 5일차 TIL (0) | 2026.02.27 |
| 스파르타클럽 내배캠 Unreal 8기 - 4일차 TIL (0) | 2026.02.26 |