(Unreal : Book-DeugU) 2. Actor, Component

Posted by : at

Category : Unreal   DeugU


Actor란?

  • 언리얼 엔진에서 콘텐츠를 구성하는 최소 단위의 물체
  • 게임 월드의 특정 공간에서 자신에게 주이진 역할을 수행하는 물체를 의미

Component란?

  • StaticMesh Component : 애니메이션이 없는 모델링 애셋, 주로 배경 물체에 사용됨
  • Skeletal Component : 애니메이션 정보가 있는 모델링 애셋, 주로 캐릭터의 물리기능을 제공하는 모듈
  • Collision Component : 물리적 기능을 설정하기 위해 제공되는 모듈
  • Camera Component : 가상 세계에서 보여지는 현상을 모니터 화면에 출력해주는 기능의 모듈
  • Audio Component : 가상 세계에서 소리를 발생시키는데 사용되는 기능 모듈
  • Particle System Component : 이펙트를 화면에 보여주기 위한 기능 모듈
  • Light Component : 광원 효과를 부여하는 기능 모듈
  • Movement Component : 움직임을 부여하는 기능 모듈

가장 기본적인 StaticMesh Component을 할당해 보자

우선 Fountain이라는 Actor 클래스를 생성한다.

// .h
UPROPERTY(VisibleAnywhere)
UStaticMeshComponent* Body;

UPROPERTY(VisibleAnywhere)
UStaticMeshComponent* Water;
// .cpp
Body = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("BODY"));
Water = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("WATER"));

// 해당 클래스의 기본 컴포넌트를 Body로 설정 후 Water를 Body에 연결한다.
RootComponent = Body;
Water->SetupAttachment(Body);

Fountain내부에 StaticMesh가 잘 생성되었는지 Unreal에서 확인한다.

Unreal에서 Mesh를 선택한다.


특정 Component의 위치지정

Water->SetRelativeLocation(FVector(0.f, 0.f, 135.f));

UPointLightComponent, UParticleSystemComponent 추가해 보기

// .h
UPROPERTY(VisibleAnywhere)
UPointLightComponent* Light;

UPROPERTY(VisibleAnywhere)
UParticleSystemComponent* Splash;
// .cpp
Light = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("LIGHT"));
Splash = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("SPLASH"));

Light->SetupAttachment(Body);
Splash->SetupAttachment(Body);

Light->SetRelativeLocation(FVector(0.f, 0.f, 195.f));
Splash->SetRelativeLocation(FVector(0.f, 0.f, 195.f));


파티클 시스템 변경해 보기


C++ 코드상에서 StaticMesh 지정해 보기

static ConstructorHelpers::FObjectFinder<UParticleSystem> PS_SPLASH(TEXT("/Game/InfinityBladeGrassLands/Effects/FX_Ambient/Water/P_Water_Fountain_Splash_Base_01.P_Water_Fountain_Splash_Base_01"));

if (PS_SPLASH.Succeeded())
{
    Splash->SetTemplate(PS_SPLASH.Object);
}

About Taehyung Kim

안녕하세요? 8년차 현업 C++ 개발자 김태형이라고 합니다. 😁 C/C++을 사랑하며 다양한 사람과의 협업을 즐깁니다. ☕ 꾸준한 자기개발을 미덕이라 생각하며 노력중이며, 제가 얻은 지식을 홈페이지에 정리 중입니다. 좀 더 상세한 제 이력서 혹은 Private 프로젝트 접근 권한을 원하신다면 메일주세요. 😎

Star
Useful Links