본문 바로가기
유니티/개발

Monster Defense 게임 개발 - 2

by 노튜 2025. 2. 11.
728x90
반응형

 

Monster Defense version 1

https://play.google.com/store/apps/details?id=com.notyu.monsterdefense

 

Monster Defense - Google Play 앱

방어하고, 생존하고, 수집하세요

play.google.com

 

몬스터 구현

몬스터의 제작은 블렌더(Blender)를 사용하였다. 블렌더에서 몬스터의 메쉬를 만들고, 애니메이션을 만들었다. 유니티는 다양한 3D 모델(Model)의 데이터 형식을 지원한다. 블렌더 파일 형식(.blend)도 지원한다. 블렌더에서 제작한 몬스터는 FBX 파일 형식(.fbx)으로 데이터를 저장하여, 유니티에서 FBX 파일 형식을 불러와 사용하였다. 애니메이션 정보도 포함하여 FBX 파일 형식으로 저장하였다. 유니티에서 FBX 파일 형식을 읽어봐 머티리얼(Material)을 추출하여, 머티리얼을 세팅하였다. FBX 파일 형식에 저장된 애니메이션 클립들을 유니티의 Animator에 연결하여, 몬스터의 애니메이션 스테이트 머신을 완성하였다. 앞서 임시로 사용한 Capsule 오브젝트를 삭제하고, FBX 파일 형식을 등록하고, 애니메이션을 추가하였다. 몬스터 게임오브젝트는 프리팹으로 만들어 관리하였다.

 

스테이지 구현

스테이지의 관리는 Stage Manager에서 한다. Stage Manager는 플레이어의 상태를 관리하며, 웨이브를 진행한다. 하나의 스테이지는 여러개의 웨이브(Wave)로 구성된다. 각 웨이브는 서로 독립적이며, 스테이지의 종료는 모든 웨이브의 몬스터가 소환되고, 소환된 모든 몬스터가 죽어야 스테이지를 종료하도록 설계하였다. Wave Manager 클래스를 만들어 몬스터 프리팹들을 등록하고 몬스터를 생성하는 코드를 구현하였다. Wave Manager는 생성한 몬스터의 총합을 통해, 몬스터가 플레이어에 의해 죽었을 경우 Wave Manager가 종료하도록 구현하였다. 모든 웨이브의 종료는 플레이어의 승리를 의미한다.

 

레벨 환경 구성 (Level Environment)

시각적인 부분을 위해 스테이지가 완성된 후 레벨 환경을 구성한다. 길, 잔디밭, 벽, 물체 등을 블렌더에서 디자인하고, 이를 유니티에서 가져와 배치를 하였다. 주변 지형을 꾸미는 요소들은 애니메이션을 사용하지 않았다. 이러한 주변 지형 요소들은 유니티에서 코드를 작성해 애니메이션을 필요한 경우에 사용한다. 마인 크래프트처럼 각각은 1m x 1m x 1m 크기의 큐브로 프리팹(Prefab)처럼 이를 몇 가지 형태의 Game Object로 만들어 배치를 진행했다. 이러한 방식은 배포되는 파일의 크기를 줄이는데 매우 유용하다.  

728x90
반응형

'유니티 > 개발' 카테고리의 다른 글

Monster Defense 게임 개발 - 4  (0) 2025.02.16
Monster Defense 게임 개발 - 3  (0) 2025.02.14
Monster Defense 게임 개발 - 1  (0) 2025.02.09