2019. 6. 22. 01:44ㆍ프로그래밍/Unity [게임]
- 게임 이름 : Doll's Night
- 게임 장르 : 공포 게임
- 개발 기간 : 2019.04.13 ~ 2019.06.01
- 개발 인원 : 2명 (프로그래밍 2명)
- 개발 엔진 : Unity3D
Unity를 이용해 공포게임을 만들었습니다. VR을 이용해 공포 게임을 만든적이 있지만 PC로도 만들고 싶다는 생각에 한번 만들어보게 되었습니다.
게임 방식은 똑같이 생긴 두 개의 집 중 하나의 집에서 힌트를 얻어 다른 하나의 집에서 숨겨진 아이템들을 찾는 방식입니다. 숨겨진 아이템이 있는 집에는 귀신이 나오기 때문에 귀신을 피해 아이템들을 모아야 합니다.
이 프로젝트에서 저는 귀신의 움직임과 아이템 배치의 프로그래밍과 맵 구성, 레벨 디자인을 담당했습니다.
1. Item
두 공간의 아이템을 똑같은 위치에 배치를 하기위해 직접 하나하나 배치하는 방법보다 코드를 이용해 한번에 배치하는 방법이 배치하는 입장에서도 편하고 정확한 위치에 배치가 가능하다고 생각을 했습니다. 그래서 각 집에 피봇 오브젝트를 만들어 그 오브젝트의 자식으로 아이템을 넣어 localPosition으로 위치를 잡아주는 방법을 선택했습니다.
아이템을 획득하게 되면 효과음과 함께 아이템이 사라지며 동시에 반대편에 있는 아이템도 사라집니다. 화면 좌측 상단 에 나타나는 UI로 현재 몇 개의 아이템을 획득했는지 알 수 있습니다.
code(Item) : https://github.com/UserUk/Unity-EvilDoll/blob/master/ItemManager.cs
2. Ghost
귀신은 StateMachine을 이용해 상태를 바꿔줍니다. 이 StateMachine안에 State라는 추상 클래스가 있는데 이 추상 클래스 안에는 Enter()와 Excute()라는 함수가 선언되어 있습니다. Enter()는 그 상태가 시작할 때 호출되는 함수로 값을 초기화하는 목적으로 사용했고 Excute()는 프레임마다 호출되는 함수로써 주목적의 코드를 실행할 때 사용했습니다.
상태는 총 두 개로 순찰하기와 추격하기가 있습니다. 귀신이 순찰하다가 플레이어가 감지되면 추격하기로 상태가 바뀌는데 이때 FieldOfView 클래스를 사용해 플레이어를 감지합니다.
FieldOfView 클래스는 유니티의 Physics.OverlapSphere()함수를 사용해 플레이어의 위치를 알아내고 그 위치를 기반으로 플레이어가 시야각 내에 들어오는지를 판단합니다.
code(EvilDoll): https://github.com/UserUk/Unity-EvilDoll/blob/master/EvilDoll.cs
code(Field Of View) : https://github.com/UserUk/Unity-EvilDoll/blob/master/FliedOfVeiw.cs
code(StateMachine) : https://github.com/UserUk/Unity-EvilDoll/blob/master/StateMachine.cs
code(State) : https://github.com/UserUk/Unity-EvilDoll/blob/master/State.cs
'프로그래밍 > Unity [게임]' 카테고리의 다른 글
Unity 게임 [The snake game] (0) | 2019.07.10 |
---|---|
Unity AI 프로그래밍 [Wolf and Rabbit] (0) | 2019.06.30 |
Unity 모바일 게임 [Mirror Ball] (1) | 2019.06.23 |
Unity VR공포게임 [Hang] (0) | 2019.06.20 |