본문 바로가기

ㄱㅔ임 ㄱㅐ발

똥 피하기 게임을 만들어보ㅈㅏ!(3. Instantiate를 사용하여 똥을 만들기, 게임 빌드하기)

이번 시간에 똥 피하기 게임을 완성하도록 하겠습니다!

시작하기 앞서 저희는 Prefab이라는 개념을 배우고 들어가겠습니다.

 

Prefab이란?

재사용이 가능한 GameObject를 말합니다.

프리펩은 보통 같은 컴포넌트가 붙어있는 여러 오브젝트(적 몬스터, 나무, 건물 등)를 만들 때 사용됩니다.

왜냐하면 오브젝트를 만든 이후 수정이 필요할 때 Prefab의 경우에는 부모 프리펩에서 바꾼 값이 자식 프리펩에 적용되기 때문에 매우 편리하게 여러 오브젝트의 값을 바꿀 수 있습니다.

 

이제 직접 만들어봅시다!

 

만드는 방법은 간단합니다.

하이라키창에서 Poop 오브젝트를 프로젝트 창으로 끌어다 두시면..

짠!

오른쪽 하이라키 창에 있는 poop의 아이콘이 파란색 상자로 변했으면 Prefab화 된 겁니다!

 

이번엔 Poop을 일정한 간격으로 생성할 PoopFactory스크립트를 작성해봅시다.

여기서 maxTime은 똥을 생성하는 시간이 될 것이고, currentTime은 현재 시간을 계산해줄 겁니다.

poopObject에는 Poop오브젝트를 넣어주시면 됩니다.

Factory의 코드입니다. currentTime에 deltaTime을 더해주다가 maxTime보다 커진 시점에 Instantiate를 하여 오브젝트를 

x 좌표는 -8.55부터 8.55중 랜덤 한 위치에, y는 5.7의 지점에 생성을 하게 됩니다.

 

여기까지 되셨다면 Factory코드를 빈 오브젝트에 넣고 변수를 채워줍니다.

이후 실행을 해 보면..

 

Poop오브젝트가 잘 떨어지긴 하지만 오류가 발생했네요...

Scene 'GameOverScene' couldn't be loaded because it has not been added to the build settings or the AssetBundle has not been loaded.
To add a scene to the build settings use the menu File->Build Settings...

hp가 0이 되어 GameOverScene으로 넘어가야 하지만 GameOverScene이 없기 때문에 발생한 오류였습니다.

 

저는 빠르게 고치기 위해 TitleScene을 복사하여 GameOverScene이라는 이름을 붙였고, 텍스트와 버튼의 동작을 약간씩 바꿔주었습니다.

title을 GameOver로, StartButton을 ReStartButton으로 변경하였습니다.
ReStartGame코드입니다.
ReStartButton에 넣어주세요

이제 Title부터 실행하여 GameOverScene에서 다시 Title로 돌아오는지 확인해봅시다.

꼭BuildSetting에 들어가서 GameOverScene추가해주세요!

드디어 만든 게임이 정상적으로 굴러갑니다!!!!

마지막으로 Hp 확인용 UI를 만들고 마치도록 하겠습니다.

GameScene에서 UI > Text를 눌러주세요
원하는 위치에 배치하신 후 세부 설정을 만져주세요

이제 플레이어 스크립트에 내용을 추가하겠습니다.

TextMeshPro말고 TextMeshProUGUI로 만들어주세요.
hp의 경우 Poop에 닿았을때만 변하니 Update가 아닌 hp감소 코드 아래에 넣어주었습니다!

만약 Poop이 바닥보다 위에 위치한 게 불편하신 분들은 Ground의 Order in Layer를 1로 변경해주시면 바닥이 Poop보다 위에 위치하게 됩니다!

 

이제 Build를 하고 최종 플레이를 해봅시다!

 

이상으로 똥 피하기 프로젝트를 마치도록 하겠습니다!

질문이나 부족한 부분이 보이시면 댓글 달아주세요! 최대한 빠르게 답장하도록 하겠습니다!