프로그래밍 농장

Adding Functionality to a Class BP [ Unreal Engine ] 본문

Unreal Engine

Adding Functionality to a Class BP [ Unreal Engine ]

Tennessee201 2021. 9. 7.
728x90

이전 포스팅까지는 언리얼엔진 블루프린트의 구성 컴포넌트를 추가하는 작업을 주로 했었습니다. 

LampFixture이라는 스태틱 메시를 추가하였고, SpotLight라는 라이트를 추가하였으며, 트리거 볼륨인 BoxCollision을 추가하여, 플레이어가 볼륨에 들어오는 것을 확인해주도록하였습니다. 

하지만 실제로 불을 켜고 끄는 기능은 추후 다루도록하겠으며 이번에는 지난번과같이 방안에 들어가면 LampFixture의 Light가 들어오는 작업을 해보겠습니다. 

위의 Level Bluprint는 저번 포스팅에서 작업하였던 것이며 , 이번에는 Class Blueprint를 이용해 작업해보겠습니다 .

둘 다 같은 기능을 수행하지만, Class Blueprint의 모듈성이 얼마나 유용한지 확인해보는것이 주 목적입니다. 

 

아래와 같이 Light_BP에서 이벤트그래프 창을 열어준다.  지금부터는 레벨 블루프린트와 같은 기능을 구현해보겠습니다.

 

Class Blueprint의 이벤트그래프에서는, 이전 Level Blueprint 때와 다르게, 액터를 우클릭해도 관련 컴포넌트의 상호작용에 대한 옵션이 나오지 않는다. 

-> 이는 레벨 상에 어떻게 배치되어 있던, 현재 선택된 개별 컴포넌트만 인식하는 것을 뜻한다. 

 

그렇다면 이벤트그래프에서는 이전 블루프린트와 같이 작업을 해주되, 간단하게 Collision접근과 SpotLight의 가시성만을 재현하도록 하겠다 ( Delay 등 . . 제외 )

 

아래와 같이 SpotLight를 드래그하여 SpotLight의 GET 노드를 생성해주고, 이 노드가 SpotLight의 컴포넌트를 가져올수있도록 해준다.  이는 곧, 아래 노드를 통하여 라이트를 끄거나 킬수도있다는 뜻이다. 

 

Get 노드와 Set 노드의 생성법과 차이점 

- Get 노드의 생성과 특징  : 단순 드래그&드랍 / 해당 컴포넌트를 가져와 상응하는 작업이 가능

- Set 노드의 생성과 특징 :  Alt + 드래그 &드랍 / 해당 래퍼런스를 다른 컴포넌트로 바꾸어 작업이 가능

 

이후 아래와 같이 Box (=Trigger로 이름변경) 을 클릭후 그래프창에서 우클릭하여 이전 Level Bluepirnt 떄와 같이 interaction의 첫 작업인 on Component Begin Overlap을 생성해준다. 

위 와같이 해당 박스에 여러가지 옵션이 있는데, 이는 어떤 Collision이 일어나느냐의 뜻이다. 

 이후 아래와 같이 실행핀을 Toggle Visibillity에 연결하면,  Trigger Box를 통해 라이트를 Toggle하는 기능이 완성된것이다.

Begin 과 End를 모두 적용해준 모습 

이후 테스트를 하기전에, 처음 플레이어가 Box 볼륨에 닿기전 라이트는 꺼져있어야하므로, Rendering 탭의 Visible체크를 해제해준다. 

테스트를 할떄의 볼륨 및 라이트의 방향은 아래와 같을것이며, 이제 실행을 해보겠다. 

 

< 플레이어의 볼륨 접근 전>

< 플레이어의 볼륨 접근 후>

 

이제  포스팅 초기에 언급하였던 Class Blueprint만의 장점을 구현해보겠다. 생성해놓은 Light를 클릭후, Alt + 드래그를 해주게 되면 아래와 같이 똑같은 속성을 가진 컴포넌트를 복사시킬수있다. 

만약 Level Blueprint였다면, 이와 같은 작업을 하지못해 하나부터 열까지 수작업으로 진행하여야 했을것이다.

당연히 각 볼륨접근/후퇴 시 똑같이 점등/소등이 된다.

728x90