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

Unity cookbook 12

Embed Size (px)

Citation preview

UNITY COOKBOOKSHOT BY. INS

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

미아를 찾아주세요

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

( 1 / 10 )

# A* # Dijkstra # DFS # BFS

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

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

( 2 / 10 )

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

길을 찾는 객체

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

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

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

( 3 / 10 )

# 생성 된 Navi Mesh

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

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

( 4 / 10 )

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

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

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

( 5 / 10 )

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

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

( 6 / 10 )

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

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

( 7 / 10 )

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

HUD 고찰 #1

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

( 8 / 10 )

HUD 고찰 #2

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

( 9 / 10 )

# HUD 를 표현하는 객체

HUD 고찰 #3

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

( 10 / 10 )

Thank You !