Unity 공포게임 [Doll's Night]

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로 현재 몇 개의 아이템을 획득했는지 알 수 있습니다.

 

<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