블루프린트 컴포넌트의 사용법
1절에서 액터가 게임 월드에 배치될 수 있는 모든 오브젝트의 기본 단위이며, 다양한 기능을 담는 '컨테이너' 역할을 한다고 설명드렸습니다. 그렇다면 액터가 담는 '다양한 기능'은 정확히 무엇일까요? 바로 컴포넌트(Component) 입니다. 컴포넌트는 액터에게 특정 기능을 부여하는 모듈화된 블록이며, 언리얼 엔진의 객체 지향 설계의 핵심적인 부분입니다.
컴포넌트를 이해하는 것은 마치 레고 블록으로 무언가를 만드는 것과 같습니다. 큰 레고 판(액터) 위에 바퀴 블록(이동 기능), 창문 블록(시각적 표현), 엔진 블록(작동 로직) 등을 자유롭게 조립하여 원하는 형태와 기능을 가진 완성품을 만드는 것이죠.
컴포넌트란 무엇인가?
컴포넌트는 특정 종류의 기능을 캡슐화한 재사용 가능한 블록입니다. 액터는 하나 이상의 컴포넌트를 가질 수 있으며, 이 컴포넌트들을 조합하여 액터의 행동과 외형을 정의합니다. 컴포넌트 덕분에 개발자는 복잡한 기능을 처음부터 다시 만들 필요 없이, 필요한 컴포넌트를 액터에 '부착'하는 것만으로 해당 기능을 쉽게 추가할 수 있습니다.
예를 들어, 게임 내의 모든 캐릭터가 '이동' 기능을 가져야 한다면, 모든 캐릭터 액터에 Character Movement Component
를 추가하기만 하면 됩니다. 만약 어떤 캐릭터는 추가적으로 '총격' 기능이 필요하다면 Gun Component
를 더 추가할 수 있겠죠. 이처럼 컴포넌트는 기능을 독립적으로 관리하고 재사용할 수 있게 하여 개발 효율성을 크게 높여줍니다.
주요 컴포넌트 유형
언리얼 엔진은 매우 다양한 종류의 빌트인 컴포넌트를 제공하며, 필요에 따라 직접 커스텀 컴포넌트를 만들 수도 있습니다. 몇 가지 주요 컴포넌트 유형은 다음과 같습니다.
씬 컴포넌트 (Scene Component)
- 3차원 공간상의 위치, 회전, 크기 정보를 가지는 모든 컴포넌트의 기본입니다. 씬 컴포넌트는 다른 씬 컴포넌트의 부모가 될 수 있어 계층 구조를 형성할 수 있습니다.
- 예시:
Scene Component
(가장 기본적인 공간 정보),Camera Component
(카메라 시점),Light Component
(광원),Audio Component
(소리),Particle System Component
(파티클 효과).
시각적 컴포넌트 (Visual Components)
- 게임 월드에 시각적으로 표현되는 요소를 담당합니다.
- 예시:
Static Mesh Component
(고정된 3D 모델),Skeletal Mesh Component
(애니메이션 가능한 캐릭터 모델),Sprite Component
(2D 스프라이트).
콜리전 컴포넌트 (Collision Components)
- 다른 오브젝트와의 물리적 상호작용(충돌, 겹침 등)을 감지하는 역할을 합니다.
- 예시:
Box Collision
,Sphere Collision
,Capsule Collision
(다양한 형태의 충돌 감지 영역).
이동 컴포넌트 (Movement Components)
- 액터의 움직임을 제어하는 로직을 제공합니다.
- 예시:
Projectile Movement Component
(발사체 움직임),Character Movement Component
(플레이어 캐릭터 움직임).
이 외에도 Widget Component
(UI), Niagara Component
(고급 파티클), Post Process Component
(화면 효과) 등 수많은 컴포넌트들이 존재하며, 각각 특정 기능에 특화되어 있습니다.
블루프린트 컴포넌트 사용법
액터 블루프린트에서 컴포넌트를 추가하고 사용하는 과정은 매우 직관적입니다.
컴포넌트 추가하기
- 액터 블루프린트 에디터를 엽니다. (예: 1절에서 만든
BP_WelcomeMessage
를 열어봅시다.) - 좌측 상단의 컴포넌트 패널(Components Panel) 로 이동합니다.
- 패널 상단의
+ 추가(+ Add)
버튼을 클릭합니다. - 팝업되는 목록에서 원하는 컴포넌트 유형을 검색하여 선택합니다. 예를 들어,
Static Mesh
를 검색하여Static Mesh Component
를 추가해봅시다. - 새로 추가된 컴포넌트는 액터의 루트 컴포넌트(Root Component) 인
Default Scene Root
아래에 계층적으로 추가됩니다. (드래그하여 다른 컴포넌트의 자식으로 만들 수도 있습니다.)
컴포넌트 속성 설정하기
- 컴포넌트 패널에서 새로 추가한
Static Mesh Component
를 선택합니다. - 우측의 디테일 패널(Details Panel) 로 이동합니다.
Static Mesh
섹션에서Static Mesh
항목 옆의 드롭다운을 클릭하거나 검색 아이콘을 눌러 원하는 3D 모델(Static Mesh Asset)을 선택합니다. (예:Shape_Cube
를 검색하여 선택합니다.)- 뷰포트 패널에서 추가한 큐브가 보이는 것을 확인할 수 있습니다. 디테일 패널에서 위치(Location), 회전(Rotation), 크기(Scale) 등의
Transform
값을 조절하여 큐브의 외형을 변경해볼 수 있습니다.
컴포넌트 이벤트 활용하기
- 많은 컴포넌트는 자신과 관련된 이벤트를 발생시킵니다. 예를 들어, 콜리전 컴포넌트는 다른 오브젝트와 겹쳤을 때 이벤트를 발생시킵니다.
- 컴포넌트 패널에서
Box Collision
(또는 여러분이 추가한 다른 콜리전 컴포넌트)을 선택합니다. - 디테일 패널을 아래로 스크롤하여
Events
섹션을 찾습니다. - 여기서
OnComponentBeginOverlap
이벤트 옆의+
버튼을 클릭합니다. - 이벤트 그래프에
Event OnComponentBeginOverlap
노드가 생성됩니다. 이제 이 노드의 실행 핀 뒤에Print String
노드를 연결하여 "충돌 발생!"이라는 메시지를 출력하도록 만들어볼 수 있습니다. - 블루프린트를 컴파일하고 월드에 배치한 후, 플레이어 캐릭터가 큐브와 겹치면 메시지가 출력되는 것을 확인할 수 있습니다.
컴포넌트의 계층 구조
컴포넌트 패널에서 볼 수 있듯이, 컴포넌트들은 부모-자식(Parent-Child) 관계를 가질 수 있습니다. 자식 컴포넌트는 부모 컴포넌트에 종속되어 부모의 위치, 회전, 크기 변화에 함께 영향을 받습니다.
Default Scene Root
는 액터의 가장 기본적인 씬 컴포넌트이자 모든 컴포넌트의 기본 부모입니다.- 컴포넌트 패널에서 특정 컴포넌트를 다른 컴포넌트 위로 드래그하여 자식으로 만들 수 있습니다. 예를 들어,
Point Light Component
를Static Mesh Component
의 자식으로 만들면, 3D 모델이 움직일 때 빛도 함께 움직이게 됩니다.
이러한 계층 구조는 복잡한 오브젝트를 구성할 때 매우 유용합니다. 예를 들어, 자동차 액터는 바퀴, 문, 헤드라이트 등의 컴포넌트들을 가질 수 있으며, 각 컴포넌트는 자동차 본체(루트)의 자식이 되어 자동차가 움직일 때 함께 움직이게 됩니다.
컴포넌트 시스템은 언리얼 엔진이 지향하는 객체 지향적이고 모듈화된 개발의 핵심입니다. 기능을 컴포넌트 단위로 분리하고 조합함으로써, 개발자는 더욱 유연하고 효율적으로 게임 오브젝트를 설계하고 확장할 수 있습니다.
이번 절에서는 블루프린트 컴포넌트의 개념, 주요 유형, 그리고 액터 블루프린트 내에서의 사용법에 대해 자세히 알아보았습니다. 컴포넌트는 앞으로 여러분이 만들 거의 모든 액터의 중요한 구성 요소가 될 것입니다.