카테고리 없음

[UnrealEngine5] 언리얼 엔진으로 핵 앤 슬래시 모바일 게임 만들기(3)-무기 구현

stein 2022. 9. 11. 15:02

프로젝트 게시글

[UnrealEngine5] 언리얼 엔진으로 핵 앤 슬래시 모바일 게임 만들기(1)-구상과 캐릭터 디자인

[UnrealEngine5] 언리얼 엔진으로 핵 앤 슬래시 모바일 게임 만들기(2)-거북선과 AI 컨트롤 

[UnrealEngine5] 언리얼 엔진으로 핵 앤 슬래시 모바일 게임 만들기(3)-무기 구현 🚩

서론

 저번 게시글에서 캐릭터의 움직임을 구현하고, 해당 캐릭터를 따라오는 AI를 구현했다. 이제 캐릭터에 교체 가능한 무기를 장착시키고, 무기의 자동 공격을 구현해보자.

계획

1. 게임에 등장할 모델들 구현, 디자인하기 

2. 캐릭터 움직임 구현하기

3. 캐릭터를 따라오는 적선 구현하기

4. 조립식 무기들 장착 및 발사 구현하기 🔨

5. 체력 및 피해 시스템 구현하기 👉

6. 레벨 디자인 하기 👉

7. UI 다듬기 👉

8. 출시~! 👉

진행

4-1. 조립식 무기들 장착

- 무기 장착

담백한 대포들

  일단 무기의 컨셉은 대포가 기본이다. 대포는 업그레이드가 가능하고, 속성이 부여될 수 있다.

- 빨간색: 화염(틱 데미지)

- 파란색: 얼음(빙결 혹은 감속)

- 추가 가능

 

대포 슬롯이 현재는 6개이다

 거북선이 레벨을 올릴 때마다(또는 대포를 획득할 때마다) 대포가 추가로 장착되는 방식을 생각중이므로, 탈부착 가능한 시스템으로 구현해야한다.

 그리고 현재 거북선 디자인에서는 최대 6개까지 대포가 장착될 수 있는데, 핵 앤 슬래시 장르 특성상, 단일 공격 무기가 6개 밖에 없다면 문제가 발생할 수 있다. 따라서 추후 거북선의 추가 디자인이 나올 필요성이 있다.

- Viewport

 따라서 대포 탈부착 위치에 scene을 배치하여서 해당 scene에 대포 model을 attach/detach할 수 있게 구성한다.

미리 배치된 scene

- Blueprint

Construction Script(생성 스크립트)에서 해당 scene들을 객체 생성시 array에 미리 저장해두어, index로 접근할 수 있게 한다.

 viewport로 추가한 scene들을 construction script에서 array에 담아준다. 추후에 index로 각 scene에 접근할 수 있게 하기 위함이다.

(좌)BP_Cannon, (우)BP_FireCannon

그리고 각각 대포들을 BP로 설정해야한다. 이 때, BP_Cannon이란 부모 클래스를 설정하고, 개별 대포들은 BP_XXXCannon으로 자식 클래스로 구현하였다. 대포의 Static Mesh Component의 collision이 ignore되지 않으면 거북선이 제대로 컨트롤 되지 않는 문제가 있었기 때문에, BP_Cannon의 Construcion Script에서 Static mesh의 collision을 설정해준다.

(좌)EquipCannon Function 구현, (우) EquipCannon Function 사용

Equip Cannon Function을 만들어서 쉽게 대포를 부착시킬 수 있게 한다. 동일한 index에 무기를 부착하면 기존 무기는 destroy하도록 설정하였다.

화질구지

 대포가 class에 맞춰서 원하는 위치에 배치된 것을 확인할 수 있다.

 

4-2. 대포 발사

- 공격 방식

  대포에서 대포알을 발사하면 된다. 여러 종류의 Cannon Ball을 Projectile로 만들어 놓고, 해당 대포 위치에서 Spawn하면 된다.

 대포의 방향은 자동 조준(타게팅) 방식이 될 수도 있다. 우선은 좌우방향으로 곧게 나가게 설정한다.

- Blueprint

Cannon Ball을 Spawn하는 Cannon Blueprint

 대포알에 life Span을 정해주지 않으면 계속해서 대포알이 쌓이기 때문에 적당한 시간값을 주어야한다. 특히 모바일에서 구현하기 때문에, 성능관련 이슈는 주의깊게 살펴야한다.

Cannon Ball의 Collision Setting

 이때, Cannon Ball이 거북선에 살짝씩 겹치면서 거북선의 움직임에 영향을 주었다. 따라서 Collision에 MainCharacter Channel을 만들어서 ignore하도록 설정하였다.

대포가 발사된다!

4-3. 용머리 불꽃

- 공격 방식

 거북선 머리에서 화염, 얼음, 레이저(?) 등의 범위 공격이 발사됨. 현재 복셀 디자인이므로, 리얼한 효과를 쓰지 못하고, cube(pixel,voxel) 느낌으로 보여져야한다. 따라서 Niagara의 Particle Emitting을 사용한다.

- Niagara

(좌) Niagara, (우) Sprite Renderer에 사용한 Material

 Niagara System을 생성할 때, 제공되는 Fountain Template을 조금 변경하여서 사용하였다. 매우 다행인것, Material을 위와 같이 설정해주면 기본적으로 사각형 모양으로 Rendering이 된다는 것, 그래서 추가적인 작업 없이 현재 디자인에 사용할 수 있는 형태의 Sprite가 나왔다.

 

(좌) Niagara에서 생성한 효과, (우) 실제 게임에 적용한 모습

 

결과

 이제 각 무기들의 기본적인 발사가 모두 가능해졌다. 개별 무기들을 변경하는건 디자인만 바꾸면 되기 때문에, 다음 단계로 넘어가보자!