본문 바로가기
유니티5 독학 & 게임 제작

유니티5 독학하기 그 52번째 걸음-드디어 만들기 시작한 게임씬 실습

by 인터넷떠돌이 2018. 7. 5.
반응형

안녕하세요?


어찌어찌 드디어 유니티 NGUI 게임 프로젝트라는 책도 챕터 6을 하는 중인데, 여기서도 게임 뷰에서 추가할 것이 많이 있어서 한번 실습을 해 보기로 했습니다. 가장 먼저 할 것은 이 책의 예제대로 실습을 일단 해 보기 위해서 에셋을 추가하는 작업이 되었습니다.



가장 먼저 책의 주소로 가서 tar파일을 받았는데, 처음에는 이게 정확히 무엇인지 몰라서 압축을 풀어 보았습니다만, unitypackage파일이라는 것은 없었습니다.



그래서 먼저 유니티의 위 스크린샷과 같은 창을 열어서 Import Package라는 것을 시작하도록 합니다.



그래서 위 스크린샷처럼 All files를 하는 것으로 두어서 tar파일을 그냥 그대로 가져오는 것으로 해야 합니다.



여기서 모든 파일을 체크한 다음, 그대로 가져오기를 하는 것 입니다.



다음으로 Open Scene이라는 것을 열도록 해서, 이전까지 있는 main씬이 아닌, game씬을 열도록 합니다.



위 스크린샷과 같이 일단 게임씬이 열리는 것을 확인할 수 있습니다.



이제 계층뷰에 있는 GameCamera를 선택하도록 합니다.




그리고 나서 Add component를 눌러서, NGUI Event System(UICamera)를 선택하도록 합니다.



그리고 위 스크린샷의 내용처럼 Event Type과 Event Mask를 설정해 두도록 합니다.



다음으로는 프로젝트 뷰에서 Assets/Resources/Prefabs에 있는 PowerSource라는 것을 선택하도록 합니다.



그리고 나서 파워소스라는 프리펩-은 움직여야 하기 때문에 Add Component를 눌러서 Drag Object라는 것을 선택하도록 합니다.


일단 Target을 PowerSource라고 선택을 하도록 하고, Movement를 {1,0,1}로 주어서 Y축의 움직을 없애 주도록 합니다. 그 다음에 신속한 드래그를 위해서 Drag Effect에는 None을 주도록 합니다.



그리고 나서 어떤 게임 오브젝트이든 복사해 넣기를 위한 프리펩이든 간에 Box Collider가 없으면 건드릴 수 없기 때문에, 일단 이걸 추가해 주도록 합니다.




그리고 나서 Size를 {4,4,4}로 설정해 주도록 합니다.



그리고 나서 이번에는 프로젝트 뷰에 있는 Prefabs항목에 있는 Ground항목을 선택하도록 합니다.



원래는 ApproachOnClick.cs라는 스크립트를 추가해야 하는데, 그게 위 스크린샷에서 보이는 에러 때문에 무리가 된 상황이 벌어 졌습니다.



그래서 먼저 return해서 반환하는 값이 원래는 정의가 되어 있어야 하는데, 문제는 아직 실습이 여기까지 진행이 되지 않았기 때문에, 그냥 주석으로 변형하는 처리를 하였습니다.



그래도 GameManager.cs에 있는 또 다른 에러가 떠서 그냥 return null;이라고만 입력을 하여서 다음 진도를 나가고자 합니다. 나중에 추후 더 실습에 들어가게 되면 이 내용을 고처야 할지 모르겠습니다.



이제 플레이어프리펩을 움직이게 하기 위해서 위 스크린샷과 같이 Approach On Click를 Ground프리펩을 선택한 다음에 추가해 주도록 합니다.



그러면 위 스크린샷과 같ㄹ이 Approach On Click이 추가된 것을 인스펙터 뷰에서 볼 수 있습니다. 여기서 우 클릭을 해서 Edit script를 선택해서 코드를 수정하는 작업에 들어가 도록 합니다.



먼저 위 스크린샷에 있는 것처럼 OnPress라는 메서드를 추가하는 식으로 해서 바닥인 Ground를 누를 때 마다 플레이어 프리펩이 움직일 수 있도록 처리를 해 주도록 합니다. 그렇게 해서 위 코드의 내용을 대략적으로 설명하자면 배경이 되는 바닥을 클릭하면 3차원상으로 움직일 수 있도록 좌표로 설정되는데, 여기서 precise-나중에 나오게 되는데, 이 옵션이 체크되어 있다면, 마지막으로 클릭한 지점을 목적지로 해서 움직여라 라는 의미가 됩니다.




그리고 나서 OnPress()라는 메소드를 정의한 다음에 나와서 인스펙터 뷰에서 위 스크린샷과 같이 Precise를 설정해 주도록 하고, 다음으로는 Box Collider도 설정을 해 주도록 합니다.



다음으로는 PowerFeed와 PowerSource를 선택하도록 합니다.



여기서도 ApproachOnClick을 추가하도록 합니다.



다만, 여기로 움직일 것 까지는 아니기 때문에, 일단 Stopping Distance만 2로 설정을 해 주도록 합니다.



그리고 나서 한가지 문제가 생겼는데, PowerSource와 PowerFeeder를 드레그 하는 동안 플레이어 프리펩이 따라오거나 하는 현상이 벌어지는 경우가 있는 것입니다. 이런 경우를 방지하기 위해서 Approach On Click 스크립트에서 위 스크린샷처럼 On Drag()메소드를 추가해 주도록 합니다. 당연 드레그 중일 때는 MoveRequest를 false처리를 하라는 명령을 수행하게 됩니다.



이제서야 위 Gif파일처럼 어떻게 작업이 되기는 되는 것으로 넘어갈 수 있었습니다. 다만 이건 어디까지나 연습일 뿐이고, 실전에서는 어떻게 될지 모르겠다는 생각이 듭니다. 조만간에 다음 포스팅에서는 플레이어 오브젝트 위에다가 유저의 닉네임을 띄우는 것에 대해서 만들어 보고자 합니다.


반응형