안녕하세요?


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


+ Recent posts

티스토리 툴바