본캠프 30일차_언리얼엔진을 이용한 게임개발 입문_Actor 배치해보기(복습)

YU YEON WON·2025년 9월 16일

1. 오늘 배운 내용(키워드)

어제 배운 내용 복습하면서 과제 준비를 진행하였다.
CPP로 액터를 생성하여 코드를 입력해 컴포넌트 부착, 스태식 메시, 머티리얼 등을 추가하고 트랜스폼 함수를 입력하여 디버깅시 위치 및 형태가 변하는지 확인하였다.

위와 같이 액터를 생성해 보았다. 강의를 따라 코드를 입력하였고 다운 받은 에셋과 프로젝트 생성 시 제공되는 에셋 등에서 스태틱 메시와 머티리얼을 찾아 적용해보았다.

1-1. 컴포넌트 추가

#pragma once

#include "CoreMinimal.h"
#include "GameFramework/Actor.h"
#include "HwActor_1.generated.h"

UCLASS()
class HOMEWORK_6_UE_API AHwActor_1 : public AActor
{
	GENERATED_BODY()
	
public:	
	AHwActor_1();

protected:

	USceneComponent* SceneRoot;
	UStaticMeshComponent* StaticMeshComp;

	virtual void BeginPlay() override;
	virtual void Tick(float DeltaTime) override;
};

헤더파일에 위와 같이 신컴포넌트(신루트)와 스태틱메시컴포넌트를 선언하였다.

#include "HwActor_1.h"

AHwActor_1::AHwActor_1()
{
	PrimaryActorTick.bCanEverTick = true;

	SceneRoot = CreateDefaultSubobject<USceneComponent>(TEXT("SceneRoot"));
	SetRootComponent(SceneRoot);
	
	StaticMeshComp = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("StaticMesh"));
	StaticMeshComp->SetupAttachment(SceneRoot);

	static ConstructorHelpers::FObjectFinder<UStaticMesh> MeshAsset(TEXT("/Game/LevelPrototyping/Meshes/SM_Cube.SM_Cube"));
	if (MeshAsset.Succeeded())
	{
		StaticMeshComp->SetStaticMesh(MeshAsset.Object);
	}

	static ConstructorHelpers::FObjectFinder<UMaterial> MaterialAsset(TEXT("/Game/BlockGame/Materials/M_BlockBase.M_BlockBase"));
	if (MaterialAsset.Succeeded())
	{
		StaticMeshComp->SetMaterial(0, MaterialAsset.Object);
	}
}	

위와 같이 신컴포넌트와 스태틱메시 컴포넌트에 대한 정의를 하고 스태틱 메시를 입력하였다. 스태틱 메시와, 머티리얼은 프로젝트 내에 있는 에셋의 경로를 입력하여 설정해주는 형태이다.

1-2. 액터의 트랜스폼 변경

void AHwActor_1::BeginPlay()
{
	Super::BeginPlay();
	
	SetActorLocation(FVector(300.0f, 200.0f, 200.0f));
	SetActorRotation(FRotator(0.0f, 45.0f, 0.0f));
	SetActorScale3D(FVector(2.0f));
}

위와 같이 액터의 트랜스폼(형태, 위치 등)를 변경하는 함수를 작성하였다.
첫 번째 함수로 특정 좌표에 위치하게 하고
두 번째 함수로 액터를 Z축을 기준으로 회전하게 하였고
세 번째 함수로 액터의 스케일을 2배로 키웠다.

내일은 다른 액터를 생성하여 다른 모양으로 배치 해보고 Tick함수를 이용 액터를 디버깅 중에 이동할 수 있게 구현해 봐야겠다.

2. 느낀점

코드를 보는데 복잡하다. 반복 읽기와 직접해보기를 통해 보는데 적응해야겠다.

3. 내일 학습할 것

6번째 과제 진행 및 강의 듣기, 다른 액터 배치하고 이동 구현하기

profile
🕹️🎮🍱✈️📸 안녕하세요! 게임개발에 도전하고 있습니다!

0개의 댓글