안녕하세요?


드디어 지겹고도 지겨웠던 유니티5의 독학에서 [실전! 유니티5로 소셜 네트워크 게임 만들기]라는 책의 마지막 챕터까지 실습해 보는 데는 성공했습니다. 아무튼 이번 포스팅에서는 그 내용을 포스팅 하고자 합니다.



먼저 해야 하는 것은 슈팅게임이기 때문에 필요한 미사일을 제작하는 과정입니다. 이를 위해서 먼저 미사일 이미지를 계층뷰(Hierarchy view)로 드레그 앤 드롭으로 끌어다 놓도록 합니다.



그리고 방향을 책에서는 270으로 설정하라고 되고 있는데, 제가 실제로 입력을 했더니, -90으로 나오는 것을 확인하였습니다. 



다음으로 Missile 오브젝트에 Rigidbody2D를 추가하도록 해서, 미사일의 이동에 필요한 것을 주도록 합니다.



충돌을 위해서 Box Collider 2D라는 컴포넌트를 추가하도록 합니다.



그리고 위 스크린샷에서 보이는 것처럼 사이즈를 조절하도록 해줍니다.



다음은 게임 오브젝트를 작동하게 하기 위해서 Missile.cs라는 스크립트를 제작하도록 해줍니다.



이 코드는 시작하자 마자 Rigidbody2D에다가 오른쪽으로 8의 속도로 이동하라는 의미가 됩니다.



그리고 언제까지나 계속해서 미사일이 나가서만은 안되기 때문에, Update라고 언제나 5미터를 넘어가면 사라지라는 의미가 됩니다.



다음에는 완성된 스크립트를 Missile게임 오브젝트에 붙이도록 해 줍니다.



다음 단계로는 GamePrefabs이라는 폴더를 만들도록 합니다.



다음에는 Hierarchy view에 있던 Missile 게임 오브젝트를 끌어와서 프리팹으로 만들도록 하고, Hierarchy view에 있던 게임 오브젝트는 삭제하도록 합니다.



플레이어 캐릭터가 위 아래로 움직일 때 마다 플레이어 캐릭터의 위치에서 총알이 발사될 수 있도록 하기 위해서, MissileProcess.cs라는 스크립트 파일을 만들어서, 코딩작업에 들어가 보도록 해 봅니다.



게임 오브젝트로서 missile을 null이라고 처음 시작하자 마자 선언을 하도록 하고, 그 다음에는 시작하자 마자 MissileUpdata()라는 메소드를 실행하도록 합니다. 


obj.transform.position=this.transform.position;


이라고 해서, 이 스크립트가 속해져 있는 게임 오브젝트에서 미사일이라는 것을 발사하라는 명령어가 됩니다.


yield return new WaitForSeconds(1.0f); 


이 명령어는 총알을 발사하는 데, 1초 대기하라는 의미가 됩니다.



다음은 Player라는 게임 오브젝트에 Missile Process라는 스크립트를 추가하도록 합니다. 그런데 Missile이라는 항목이 아무것도 없습니다.



프리팹으로 되어 있는 missile을 드레그 앤 드롭으로 추가하도록 합니다.



다음으로는 레이어를 정리해야 할 필요가 있는데, 위 스크린샷에 보이는 것처럼 Tags and layers를 선택하도록 해야 합니다.



모르고 엉뚱하게 했는데, 일단 위 스크린샷에서 Layers라는 항목을 눌러서 메뉴를 펼치도록 합니다.



위 스크린샷에 나와 있는 것처럼 순서대로 레이어를 지정하도록 합니다.



먼저 Player라는 게임 오브젝트는 Player라는 레이어에 거치가 되도록 해 줍니다.



게임 오브젝트는 아니지만, 미사일은 프리팹을 눌러서, 레이어를 Missile로 지정해 주도록 합니다.



이번에는 위 스크린샷에 나와 있는 것처럼 Physics 2D라는 것을 실행 하도록 해서, 레이어가 서로 충돌하지 않도록 해야 합니다.



위 스크린샷에 나와 있는 체크 표시를 해제하는 것으로 Player와 Missile은 이제 충돌하지 않고, 발사될 때마다 큰 문제는 없으리라 생각합니다.



위 동영상에 나오는 것처럼, 이제는 충돌없이 미끄럽게 미사일이 발사가 되는 것을 볼 수 있습니다.



이제 다음에는 몬스터를 작성할 시간입니다. 이 작업을 하기 위해서 먼저 Pig_move01이라는 이미지를 Hierarchy view에 끌어다가 놓습니다.



일단 위 스크린샷처럼 돼지의 위치를 끌어다가 옮기도록 해 봅니다.



그리고 좌우반전을 위해서, 위 스크린샷에 나와 있는 것처럼 -1을 주도록 하는 식으로 만들도록 합니다.



역시 움직임을 위해서 Rigidbody 2D를 주도록 합니다.



그리고 중력의 영향을 받아서 돼지들은 떨어지면 안되기 때문에, Gravity Scale을 0이라고 주도록 합니다.



Box Collider 2D를 추가한 다음에, 사이즈를 조절해 주도록 합니다.



이번에는 제대로 움직이게 하기 위해서, Monster.cs라는 스크립트 파일을 만들어 주도록 합니다.



Random.Range를 -2에서 -4까지 주는 것으로 해서, 돼지들은 좌측으로 이동하도록 해 줍니다.



위 스크린샷에 나온 것처럼 코딩을 하도록 합니다.먼저 총알이 되는 Missile이 몬스터에게 충돌하였을 경우에는 총알이 사라지도록 코딩을 한 것입니다. 그리고 나서 처음에 돼지의 체력이 5로 설정을 했는데, 이 체력이 총알에 맞으면 깍여서, 0 이하가 되면 몬스터가 사라지라고 코딩을 하였습니다.



처음에는 몰랐는데, 책에서 오타가 난 것이 있어서, 위 스크린샷처럼 일단은 바꾸도록 했습니다.



다음으로는 Monster.cs라는 스크립트를 몬스터의 게임 오브젝트에 붙이도록 합니다.



그리고 다음에는 Hierarchy view에 있는 게임 오브젝트를 GamePrefabs라는 폴더로 끌어다 놓는 것으로 프리팹으로 만들어 주도록 합니다. 이 역시 프리팹이 만들어 지고 난 다음에는, Hierarchy view에 있는 게임 오브젝트를 삭제하도록 합니다.



다음으로는 몬스터가 생성되도록 create empty child를 생성하도록 합니다.



먼저 MonsterManager라고 이름을 바꾸도록 합니다.



이번에는 MonsterManager.cs라는 스크립트 파일을 생성하도록 합니다. 



여기서는 역시 위 그림처럼 코딩을 하는데, 특이한 사항이라면, 여깃 MonsterUpdate() 메서드 안에서 startcoroutine이라고는 것을 통해서 MonsterUpdate()를 집어 넣어서, 반복적으로 처리가 되도록 했다는 것이 특이점입니다.



당연 다음 단계는 이 MonsterManager.cs를 MonsterManager 게임 오브젝트에 추가하도록 합니다. 그리고 나서 비어 있는 Empty항목에 몬스터의 프리팹을 집어 넣도록 합니다.



그리고 몬스터를 여러마리 생성시키게 하기 위해서, 위 스크린샷에 나와 있는 것처럼 MonsterManger를 여러개 복사해서 놓도록 합니다.



최종 결과로 몬스터인 돼지가 3마리씩 나와서 날아가는 것을 볼 수 있습니다. 이것으로 책에서 나와 있는 주요 챕터는 다 하기는 했지만, 그래도 부록이 남아는 있고, 이 책 한권만 가지고서는 어떻게 게임을 만들 수 있는 기초가 되지 않았습니다. 아무래도 유니티5의 독학은 아직 갈길이 멀었다는 생각이 듭니다.


+ Recent posts

티스토리 툴바