학습일지/언리얼

Unreal C++ Actor 이동 / 로그 / 구조

Tsukino Ren 2026. 3. 25. 21:08

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