본문 바로가기

블루프린팅/5. 오브젝트 인터렉션

[2부 게임개발] 05오브젝트 인터렉션

새 프로젝트와 레벨 생성

일인칭 템플릿으로 새 프로젝트를 만들고 이름을 UE5BpBook으로 지정한다.

플레이를 누르고 뷰포트를 클릭하면 게임 입력이 반응한다.

WASD를 눌러 이동이 가능하고 왼쪽 버튼이 Fire이다.

플레이모드에서 Shift+F1으로 커서를 표시할 수 있고 일시정지 버튼으로 플레이세션을 일시 중지 시킬수 있다. 이는 게임의 속성을 탐색하는데 유용하다. 

중지버튼으로 플레이 세션이 종료되고 편집모드로 돌아간다. 빠져나오기 버튼을 클릭하면 카메라가 플레이어에서 분리돼 휠과 좌클릭 드래그로 레벨을 자유롭게 이동할수 있다. 

 

레벨에 오브젝트 추가

템플릿에 이미 총이 포함되어져 있다 이 총을 획득하여 발사체로 쏘면 색이 변하는 간단한 타깃 액터를 만들자.

1. 레벨에디터 +를 눌러 세이프>실린더를 끌어 레벨 적당한 곳에 배치하면 인스턴스가 생성된다.

2. 디테일패널에서 실린더 인스턴스의 이름을 CylinderTarget을 변경한다.

머터리얼탐색

발사체에 맞았을때 색상을 변경하려면 머터리얼을 변경해야 한다.

머터리얼 생성

1. 콘텐츠 드로어 버튼을 클릭 FirstPersonBP폴더를 클릭후 우클릭으로 새폴더를 만들고 이름을 Materials로 변경 리소스 정리를 쉽게한다.

'

2. 새로 생성된 폴더로 이동하여 우클릭후 머터리얼을 선택  에셋을 생성한다. 이름을 M_TargetRed로 지정한다.

 

머터리얼 프로퍼티와 노드

1. M_TargetRed를 더블클릭해서 에디터를 연다 그리드판에 보이는 판넬은 머터리얼정의 노드이다. 이곳에 설정 노드를 연결해줘 속성을 변경할 수 있다.

2. 머터리얼에 색상을 지정하려면 우클릭후 검색창에서 Vector Parameter를 찾아 추가해준다.

3. 추가한 노드의 이름을 Color로 변경한다.  노드 중앙의 검정 사각형을 더블클릭해 Color Picker가 나오면 빨간색으로 설정하고 OK을 클릭한다.

4. 마지막 단계는 Color노드의 상단 출력핀에서 머터리얼 노드의 베이스 컬러 입력핀으로 와이어를 클릭하고 연결한다.

머터리얼에 서브스턴스 추가

머터리얼 정의노드 속성중 광택을 추가할 수 있다. 

1. Grid우클릭해 ScalarParamter를 추가한다.

2. 이름을 Metalic으로 변경한다.

3. Default값을 0.1로 한다.

4. 출력을 머터리얼노드의 Metalic과 연결해준다.

5. 방금만든 Metalic를 우클릭하고 복제를 선택한다.

6. 복제된 Metalic노드를 선택하고 이름을 Roughness로 변경한다. 

7. 이 노드를 머터리얼 정의 노드의 Roughness와 연결한다.

에디터 왼쪽 상단의 플로피디스크아이콘을 눌러 저장 버튼을 눌러 저장한다. (요즘 플로피디스크가 없는 세대분들은 모를지도 ㅎㅎ, 개발자가 나이드신분인듯)

머터리얼노드의 입력으로 베이스컬러, 메탈릭및 러프니스노드를 생성해 연결해주었다. 새로 생성한 노드는 VectorParameter와 ScalarParameter이다. 단순한 변수타입임을 알수 있다. 그래서 메탈릭과 러프니스는 이름은 다르지만 Type은 동일했다.

 

타깃 블루프린트 생성

실린더를 레벨에 만들고 색상 머터리얼까지 만들었으니 총알에 맞으면 색상을 바꿔주는 게임로직인 블루프린트를 만들어야 한다.

1. 레벨에서 실린더를 선택하면 디테일창의 +Add 버튼의 오른쪽 아이콘을 클릭한다. 

2. 이름을 NewSubclass가 선택되여져 있는 상태로 두고 이름은 BP_CylinderTarget을 변하고 폴더는 FirstPerson>Blueprints를 선택한다

Select를 클릭해 블루프린트를 생성한다.

블루프린트 에디터가 뷰포트탭에 있는 BP_CylinderTarget과 함께 열린다.  Static Mesh Component가 이미 포함되어 있다

간단한 블루프린트를 작성하기 위해 이벤트그래프텝을 선택한다.

히트감지

히트 감지 메카니즘을 만들기 위해 다음 단계를 수행한다.

1. 그리드위에 추클릭후 hit 노드를 추가한다. 

2. 히트이벤트의 노드의 흰색 실행핀에서 와이어를 클릭하고 빈 공간으로 끌어 컨텐스트 메뉴를 연다. 검색 상자에서 set material을 입력해 Set Material (StaticMeshComponet)를 그리드에 추가한다.

머터리얼 교체

Material입력밑의 Select Asset을 클릭해 red로 검색후 M_TargetRed를 선택한다.

2. 블루프린트를 컴파일하고 저장한다. 컴파일후 체크 버튼이 표시된다.

게임실행

플레이후 총을 획득해 실린더로 발사하면 실린더가 빨간색으로 변한다.

정리해보면 실린더를 만들고 블루프린트 에디트그래프에 hit노드를 추가하고 출력을 set parameter(Static) 노드를 만들어 연결하고 Material을 Red로 연결해준게 다다. 유니티에 비해 처음에는 메뉴가 어지럽지만 하다보니 점점 익숙해지는듯 하다.

 

블루프린트 개선

현재 블루프린트는 총알뿐이 아니라 플레이어가 부딪쳐도 색깔이 바뀐다. Set Material의 입력이 EventHit의 출력이 바로 연결되어 있다.  Hit시 충돌 오브젝트를 검사하지 않기 때문이다.

총알은 Content Draw를 열어보면 BP_FirstPersonProjectile이란 이름이다.

Hit와 SetMaterial Target으로 연결하기 위해 형변환 노드를 추가해준다. Other를 끌어서 컨텍스트메뉴가 나오면 Cast To BP_FirstPersonProjectile를 선택해준다

Event Hit 출력을 Cast To BP_FristPersonProjectile 형변환노드에 연결해준다. 그럼 Set Material와의 연결이 끊어지는데 그럼 다음과 같이 배치하고 형변환노드의 출력과 연결한다.

Evnet Hit와 SetMaterial 사이의 형변환노드가  BP_FristPersonProjectile일 경우에만 출력핀이 전달되어 결국 총알에만 반응하는 블루프린트가 된다. 특정한 액터에만 동작하는 블루프린트를 작성할 경우 형변환노드를 활용하면 될듯하다.

게임실행

실린더가 플레이와 충돌할때는 변화가 없지만 총알과 충돌할때는 색상이 변한다.  형변환 노드의 사용법을 익힌듯 하다.