Top Banner
UNITY COOKBOOK SHOT BY. INS PART 12 네네네네네네 네네네네네
12

Unity cookbook 12

Jan 18, 2017

Download

Technology

Jihun Soh
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Unity cookbook 12

UNITY COOKBOOKSHOT BY. INS

PART 12네비게이션과 디스플레이

Page 2: Unity cookbook 12

미아를 찾아주세요

게임에서 사용하는 길 찾기 알고리즘은 그 수가 매우 다양하며 널리 쓰이는 편입니다 .물론 이런 알고리즘의 논리와 난이도는 매우 복잡하고 구현하기가 까다로워서 손쉽게 다가갈 수 없습니다 .하지만 이번에 배울 주제는 유니티에서 다룰 것이고 알고리즘 또한 기능화 되어있어서 간단하게 사용할 수 있습니다 .

( 1 / 10 )

# A* # Dijkstra # DFS # BFS

Page 3: Unity cookbook 12

네비게이션 (Navigation) 활용 #1

‘Window’ 탭에서 ‘ Navigation’ 을 클릭하게 되면 ‘ Inspector View’ 옆 칸에 ‘ Navigation’ 탭이 생긴 것을 확인할 수 있습니다 .‘Bake’ 탭을 눌러보면 객체의 대한 판정 정보를 수정할 수 있는데 , 길을 찾는 객체의 정보에 따라서 길의 경로 또한 바뀌어 버립니다 . 실제로 대상 객체의 사이즈 혹인 입맛대로 직접 커스텀마이징 하여 변경하는 것을 권장하는 편입니다 .

( 2 / 10 )

반지름 , 책정거리 ( 반경 ) 높이

길을 찾는 객체

기울기단층 높이 ( 계단 , 웅덩이 etc)

Page 4: Unity cookbook 12

네비게이션 (Navigation) 활용 #2

‘Cube’ 모양 객체를 ‘ Navigation’ 이 찾을 수 있는 길로 만들어보겠습니다 .길로 판정 할 객체의 ‘ Static’ 를 보시면 ‘ Nacigation Static’ 이라는 매뉴얼이 보이는데 지정을 해주면 됩니다 .이 후 ‘ Navigation View’ 에서 ‘ Bake’ 를 누르면 위 사진처럼 파란 바닥재가 추가적으로 그려지는데 이를 ‘ Navi Mesh’ 라고 부르고 해당 지점으로 이동할 수 있는 길로 판정되었다고 볼 수 있습니다 .

( 3 / 10 )

# 생성 된 Navi Mesh

Page 5: Unity cookbook 12

네비게이션 (Navigation) 활용 #3

하지만 이 기능의 큰 문제점이 하나 있습니다 .‘Navi Mesh’ 가 생성 되었지만 ‘ Bake’ 된 것이기 때문에 구워지고 난 후 해당 객체를 이동시켜도 ‘ Navi Mesh’ 는 그대로 유지됩니다 .또 하나의 예제로 Navi Mesh 가 구워진 다리 객체의 중심이 잘려 더 이상 이동을 못할 때에도 문제점이 생겨버리기도 합니다 .구태여 보이지 않는 ‘ Navi Mesh’ 를 추가적으로 생성해 막을 수 있지만 이는 한계점이 존재합니다 .

( 4 / 10 )

- Realtime 이 적용되지 않은 ‘ Navi Mesh’ 는 한 번 구워질 때의 모습을 계속 유지한다 -

Page 6: Unity cookbook 12

네비게이션 (Navigation) 활용 #4

본격적으로 길 찾기를 위해 위 같은 지형을 배치하였습니다 . 물론 배치에 들어간 모든 오브젝트는‘Navigation’ 이 길로 인식해야 하기 때문에 모든 객체에 ‘ Navigation Static’ 를 대입합니다 .이후 ‘ Bake’ 를 해보시면 길을 찾는 객체의 정보를 토대로 전 지형에 ‘ Navi Mesh’ 가 깔리는 것을 볼 수 있습니다 .

( 5 / 10 )

Page 7: Unity cookbook 12

네비게이션 (Navigation) 활용 #5

본격적인 활용을 위해 위와 같은 스크립트를 작성해 봅시다 .전 편에서 우리가 배웠던 것과 다를 바가 없는데 ‘ NavMeshAgent’ 컴포넌트를 받아 ‘ SetDestination’ 함수로 해당 목표로스스로 길을 찾아주게 하는 것이 끝입니다 . 이후 카메라 이동까지 표현하기 위해 위 스크립트를 하나 더 제작합니다 .

( 6 / 10 )

Page 8: Unity cookbook 12

네비게이션 (Navigation) 활용 #6

길을 찾을 캐릭터에 아까 보았던 ‘ Nav Mesh Agent Component’ 를 추가하고 속도 , 방향성 , 가속도를 조정합니다 .그리고 만들었던 스크립트를 Add Component 합니다 . 추가로 카메라에도 만들었던 스크립트를 부착합니다 .게임을 실행하고 ‘ Navi Mesh’ 를 이용해 길을 찾는 플레이어를 볼 수 있습니다 .

( 7 / 10 )

# 스스로 길을 찾아서 이동하는 플레이어

Page 9: Unity cookbook 12

HUD 고찰 #1

HUD 란 ‘ Head-Up Display’ 의 준말로 3D 게임상에서의 추가적인 Text 나 Sprite 등이 디스플레이화 되는 것을 말합니다 .원리는 게임을 비추는 카메라와 , GUI 를 비추는 평면 카메라를 Blending( 혼합 ) 하여 저러한 디스플레이를 만들어냅니다 .이러한 테크닉은 여러 게임에서도 주로 활용되고 있습니다 .

( 8 / 10 )

Page 10: Unity cookbook 12

HUD 고찰 #2

새로운 객체를 생성하는데 ‘ UI’ 탭에서 ‘ Text’ 로 이동하게 되면 World Space 상의 ‘ Canvas’ 와 우리가 선택한 ‘ Text’ 가계층구조로 들어가 있는 것을 확인할 수 있습니다 .‘Canvas’ 는 3D 공간 상에 들어가 있는 2 차원 평면 카메라 이며 실제 게임에는 보이지 않으며 , 텍스트나 저 공간안에있는 물체만 게임 카메라와 혼합되어 보이게 됩니다 .

( 9 / 10 )

# HUD 를 표현하는 객체

Page 11: Unity cookbook 12

HUD 고찰 #3

빈 오브젝트로 캐릭터에 붙일 축이 될 offset 를 조정하고 그의 계층으로 말꼬리 ‘ Image’ 와 ‘ text’ 를 넣어줍니다 .이후 스크립트를 새로 만드는데 캐릭터 (World Pos) 의 위치와 , 카메라 (View Pos) 의 변환 행렬을 통해 2 차원 상에서 캐릭터 위치를 판별할 수 있습니다 .이상 네비게이션과 HUD 에 대해서 알아보았습니다 .

( 10 / 10 )

Page 12: Unity cookbook 12

Thank You !