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

위와 같이 액터를 생성해 보았다. 강의를 따라 코드를 입력하였고 다운 받은 에셋과 프로젝트 생성 시 제공되는 에셋 등에서 스태틱 메시와 머티리얼을 찾아 적용해보았다.
#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);
}
}
위와 같이 신컴포넌트와 스태틱메시 컴포넌트에 대한 정의를 하고 스태틱 메시를 입력하였다. 스태틱 메시와, 머티리얼은 프로젝트 내에 있는 에셋의 경로를 입력하여 설정해주는 형태이다.
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함수를 이용 액터를 디버깅 중에 이동할 수 있게 구현해 봐야겠다.
코드를 보는데 복잡하다. 반복 읽기와 직접해보기를 통해 보는데 적응해야겠다.
6번째 과제 진행 및 강의 듣기, 다른 액터 배치하고 이동 구현하기