2019. 6. 20. 20:00ㆍ프로그래밍/Unity [게임]
- 게임 이름 : Hang
- 게임 장르 : 공포 게임
- 개발 기간 : 2018.09.28 ~ 2018.12.24
- 개발 인원 : 5명 (프로그래밍 3명, 그래픽 2명)
- 게임 엔진 : Unity3D
- 사용 기기 : Vive
평소 공포 게임에 관심이 많았던 저는 캡스톤을 계기로 팀원들과 VR을 이용해 공포 게임을 만들기로 했습니다. 처음 게임은 "Precipice"라는 공포 게임에서 영감을 받아 뫼비우스의 띠처럼 똑같은 방을 돌고 도는 방식이었습니다. 하지만 VR의 특성을 더 잘 살리고자 "에밀리는 놀고 싶어"라는 게임과 비슷한 방식으로 만들게 되었습니다.
게임은 집 안에서 나오는 귀신들을 피해 주어진 시간 동안 살아남는 게임이며, 각각의 귀신마다 피하는 방법이 다르므로 플레이어는 그 방법을 알아가며 죽지 않고 버텨야 합니다.
이 프로젝트에서 저는 휴대폰과 귀신의 코딩을 맡았습니다.
모든 귀신은 Ghost라는 추상클래스를 상속받고 있고 GhostManager를 통해 일정 시간마다 랜덤으로 생성이 됩니다. 이미 생성된 귀신들은 중복해서 생성이 불가능하기 때문에 난이도 조절을 위해 시간이 지날수록 짧은 주기로 여러 종류의 귀신들이 생성되도록 만들었습니다.
![]() |
![]() |
SeeGhost는 플레이어가 자신을 바라보지 않으면 플레이어에게로 점점 다가가는 귀신입니다. 생성될 때 항상 플레이어의 뒤에서만 나타나며 Raycast를 이용해 플레이어가 벽이랑 붙은 경우를 확인하고 만약 벽이랑 붙어있다면 벽 바로 앞에 생성이 되도록 만들었습니다.
플레이어가 일정 시간동안 계속 바라보고있으면 사라지는 귀신이며, 플레이어의 시야감지는 유니티의 기본 함수인 OnBecameVisible()과 OnBecameInvisible()을 사용했습니다.
NoiseGhost는 NavMashAgent를 사용해 무조건 플레이어를 향해 달려가며 휴대폰을 사용해 잠깐 기절시킬 수 있는 귀신입니다.
PhoneController를 이용해 휴대폰을 관리했습니다. 휴대폰을 사용해 다가오는 귀신으로부터 몸을 보호할 수 있고 어두운 장소에서 조명을 끄고 켤 수 있도록 만들었습니다.
지속적인 휴대폰을 사용으로 게임의 난이도가 떨어질것 같아 OverHeat이라는 함수를 통해 일정 시간 휴대폰의 기능을 사용하지 못하도록 막았습니다.
이 프로젝트를 진행할 때 맵 크기에 비해 귀신의 수가 너무 많다보니 전부 넣지 못한것이 조금 아쉬웠고, VR을 사용하다 보니 플레이를 하다 멀미가 발생하게 되는데 이 부분이 조금 아쉬웠습니다. 그리고 여러명의 코드가 합쳐지다보니 생각처럼 쉽게 합쳐지지가 않아 고생을 했습니다. 덕분에 다른 사람이 알아 볼 수 있게 코딩하는 것과 다른 사람의 코드를 잘 해석하는 것이 중요하다는 것을 느꼈습니다.
<모든 코드>
UserUk/Unity-Hang
Contribute to UserUk/Unity-Hang development by creating an account on GitHub.
github.com
'프로그래밍 > 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 공포게임 [Doll's Night] (1) | 2019.06.22 |