본문 바로가기

개발 프로젝트/Unity - WeaponGameProject

WeaponGameProject - 0

0. 게임 개발 개요

개발환경 : Unity 3D

개발 언어 : C# 등

게임 장르 : 3인칭 액션 게임

 

해당 게임개발 목적

 

 이번에 제작할 게임은 3인칭 액션 게임이다.

게임의 카메라는 플레이어 등 뒤에 존재하여, 플레이어와 주변 사물 및 몬스터를 동시에 비춘다.

WeaponGameProject의 주요 요소는 플레이어가 사용할 무기이며 이것과 상호작용하는 것이다.

일회용품처럼 빠르게 소모 및 전환이 되는 무기를 사용함으로서 역동적인 액션게임을 만들어보고자 한다.

 

1. 모티브로 삼을 게임 3개

1-1. Titan Souls 

https://youtu.be/7rf9khR4vLc

화살(무기)을 발사하고, 화살을 다시 회수하는 기믹에 집중한다.

 

1-2. The Legend of Zelda Breath of the wild

https://youtu.be/1rPxiXXxftE

(02분 07초부터 02분 21초까지)

필드에 뿌려진 다양한 종류의 무기를 주워서 사용하는 기믹

위 영상에서는 나타나진 않지만, 모든 무기는 어느정도 사용하면 전투중에 파괴된다.

단 다양한 무기의 그래픽 에셋을 구하는 문제와 무기마다 다르게 해야할 캐릭터의 모션 구현은 어려운 문제이다.

때문에 "필드에 뿌려진 무기를 주워 쓴다" 및 "무기는 언제든 파괴된다"에 집중하도록 한다.

 

1-3. Ori and the blind forest

https://youtu.be/QUw1Lrvtr8I

해당 영상은 Ori and the blind forest 에서는 Bash라는 기술을 사용하는 영상이다.

Bash 기술은 주변의 움직임을 멈추고 자신만 가속운동을 하게하는 기술이다.

해당 Bash 기술을 플레이어 캐릭터와 무기 사이에 연동되게 한다.

또한 플레이어의 가속을 표현하기 위한 역동적인 카메라 움직임도 구현한다.

 

2. WGP (WeaponGameProject)의 플로우 차트

3. WGP의 기본 구성

3-1. 플레이어

 플레이어는 HP , 스테미너 , 가지고있는 무기 등의 요소로 구성돼있다.

플레이어의 HP가 0이 되면 게임은 끝난다.

스테미너는 Bash를 가능하게하는 요소이다. Bash가 동작하면 스테미너가 줄어들고

스테미너가 부족하면 Bash는 동작하지 않는다.

가지고 있는 무기는 현재 장착한 무기의 정보이다.

무기의 종류에 따라 플레이어의 공격력과 공격 사거리 , 공격 속도가 결정된다.

2. 무기 오브젝트

 무기 오브젝트는 아이템처럼 고유의 번호로 구분 가능하게끔 클래스로 설계된다.

무기 오브젝트는 무기의 식별번호 , 무기의 공격력 , 내구도 , 공격 사거리 , 공격 속도가 저장되어있다.

무기 오브젝트는 필드에 존재하거나, 몬스터가 가지고 있을 수 있다.

3. 적 (몬스터) 오브젝트

 몬스터 오브젝트는 코루틴으로 설계하여 상황마다 다른 행동 패턴을 취하게 한다.

행동 패턴은 3가지로 설정한다.

1. 경계 상태

2. 추격 상태

3. 전투 상태

몬스터의 초기 행동 패턴은 경계 상태로 설정한다.

그리고 몬스터 근처에 접근하면 플레이어를 추격하는 추격 상태로 전환한다.

추격 상태를 통해 플레이어에게 가깝게 접근하면 전투 상태로 전환한다.

 

4. WGP의 핵심 요소 Bash

 나는 WGP에서 월드에 배치되어있는 무기오브젝트로 돌진할 수 있는 기믹을 구현할 것이다.

Bash는 LShift(좌쉬프트) 키를 누르면 시작된다.

Bash가 시작되면, 플레이어 주변의 무기를 탐색하는 Sphere Collider를 생성한다.

생성된 Sphere Collider의 크기는 Bash가 지속되는 동안 점점 커지며, 최대 2초까지 커진다.

Bash가 지속되는 동안 게임 전체의 시간이 느려진다.

Bash가 지속되는 동안 Sphere Collider 내부에 있는 무기 오브젝트가 붉게 빛난다. 이 때 돌진 경로 또한 표시된다.

Bash는 LShift 키를 떼면 발동되며,

돌진 가능한 무기 오브젝트들 중 카메라의 ZVector(정면 방향 벡터)와 가장 가까운 무기에 돌진한다.

 

5. 핵심요소 Bash의 유연한 활용

 4번 요소에서 구현된 Bash는 월드에 배치된 어떤 무기라도 돌진이 가능하다.

이는 당연히 몬스터가 가지고 있는 무기도 가능하며

플레이어가 공중으로 던진 무기에도 가능하다.

이를 통해 3차원에서 유연하게 움직인다.

때문에 전투의 무게감(실제 중력을 표현하는 말입니다.)은 전체적으로 가벼운 편일듯 하다.