컴포넌트(Component)는 Actor가 특정 속성을 가지거나 역할을 수행하도록 만들어주는 부품 개념이다.
Static Mesh Component로 3D 모델을 표시하고,Audio Component로 소리를 재생하며,Collision Component로 충돌 이벤트를 처리할 수 있다.모든 Actor는 Root Component라는 최상위 컴포넌트를 가져야 한다.
💡 트랜스폼 계층 구조
Scene Component를 Root로 설정한 뒤, Static Mesh와 같은 하위 컴포넌트를 Attach하면, 하위 컴포넌트는 Root Component의 트랜스폼을 따라간다.
Static Mesh Component는 3D 모델(Static Mesh)을 화면에 표시하고 물리 충돌 관련 기능을 제공하는 컴포넌트다.
#pragma once
#include "CoreMinimal.h"
#include "GameFramework/Actor.h"
#include "Item.generated.h"
UCLASS()
class SPARTAPROJECT_API AItem : public AActor
{
GENERATED_BODY()
public:
// 생성자
AItem();
protected:
// 루트 컴포넌트를 나타내는 Scene Component
USceneComponent* SceneRoot;
// Static Mesh를 표시할 Static Mesh Component
UStaticMeshComponent* StaticMeshComp;
};
#include "Item.h"
AItem::AItem()
{
// 1. Scene Component 생성 및 루트로 설정
SceneRoot = CreateDefaultSubobject<USceneComponent>(TEXT("SceneRoot"));
SetRootComponent(SceneRoot);
// 2. Static Mesh Component 생성 및 Scene Component에 부착
StaticMeshComp = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("StaticMesh"));
StaticMeshComp->SetupAttachment(SceneRoot);
}
USceneComponent* SceneRoot : UStaticMeshComponent* StaticMeshComp :SceneRoot = CreateDefaultSubobject<USceneComponent>(TEXT("SceneRoot"));
StaticMeshComp = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("StaticMesh"));
CreateDefaultSubobject<T>() : <T>는 생성할 컴포넌트의 유형이다.TEXT("이름")은 이 컴포넌트를 식별하기 위한 이름이다.SetRootComponent(SceneRoot);
StaticMeshComp->SetupAttachment(SceneRoot);
SetRootComponent(SceneRoot) :SetupAttachment(SceneRoot) :