[Unity] 존 레몬의 공포 체험 (3)

Kim Yuhyeon·2023년 2월 15일
0

게임개발

목록 보기
74/135

환경


참고

https://learn.unity.com/tutorial/hwangyeong?uv=2020.3&projectId=633563fcedbc2a7b67ba2f8f

목표

  • 존 레몬이 탈출해야 하는 흥미로운 환경을 추가하고 적합한 조명을 적용
  • 적이 돌아다닐 수 있도록 환경에 내비메시를 베이크

광원

Unity의 광원은 단순히 게임 오브젝트에 Light 컴포넌트를 추가한 것입니다.

Light 컴포넌트에서는

  • 광원의 컬러와 강도
  • 광원의 '유형'을 변경할 수 있으며,
  • 그림자와 라이트매핑을 위한 복잡한 컨트롤도 다양하게 포함되어 있습니다.

Unity의 새로운 씬에 기본값으로 생성되는 2개의 게임 오브젝트 중 하나는 방향 광원입니다.
Level 프리팹으로 인해 이제 씬에 일련의 광원이 추가되었습니다.

Directional Type

씬의 방향 광원은 Directional Type으로 설정되어 있습니다.
Directional Type 광원은 태양과 같이 거리가 매우 먼 광원 오브젝트를 모방합니다.
씬에서 어느 위치에나 배치할 수 있으며 회전하여 광원이 씬에 영향을 주는 각도를 변경할 수 있습니다.
방향 광원을 조정하여 달빛처럼 보이게 하고 그림자를 만들어 보겠습니다.

전역 조명 라이트 매핑 효과 생성

Unity에서는 직접 조명 및 간접 조명이라는 2가지 조명을 통해 실제 빛의 속성을 시뮬레이션합니다.

  • 직접 조명은 태양(씬의 방향 광원)과 같은 특정 광원으로부터 옵니다.
  • 간접 조명은 직접광이 표면에서 반사되어 발생하는 추가적인 조명입니다.

이 효과는 Unity에서 주로 전역 조명 라이트매핑 기능을 통해 구현됩니다.
라이트매핑은 씬 내의 광원 반사를 시뮬레이션하여 프로젝트 내에 저장된 에셋에 작성(또는 '베이크')합니다.
이 작업에는 시간이 소요되지만 매우 사실적인 씬을 만들 수 있습니다.

Window > Lighting

Environment Lighting Source : Gradient로

Environment 섹션에서 Environment Lighting Source를 Gradient로 설정합니다.

그레디언트는 다음의 3가지 컬러 필드로 나누어집니다.

  • Sky: 씬 위에서 내려오는 환경 광원을 제어합니다.
  • Equator: 지평선에서 씬 중앙으로 이동하는 광원을 제어합니다.
  • Ground: 씬 아래에서 올라오는 광원을 제어합니다.

그레디언트는 전체 씬을 감싸는 커다란 구체와도 같습니다.

내비게이션 메시 추가

유령이 돌아다닐 수 있도록 하기 위해 내비메시(NavMesh, 내비게이션 메시)라는 빌트인 시스템을 이용할 수 있습니다.

*메시 : 여러 삼각형이 맞춰져 형태를 정의하는 것

이러한 메시를 통해 JohnLemon을 화면에 렌더링할 수 있습니다.
내비메시는 보이지 않는 셰이프로, 선택한 게임 오브젝트가 이동할 수 있는 영역을 정의합니다.

그러면 이동할 수 있는 영역과 이동할 수 없는 영역을 어떻게 결정할까요?

게임 오브젝트 정적으로 표시

게임 오브젝트가 정적으로 지정되어 있으면
Unity의 내비게이션 시스템은 해당 게임 오브젝트가 이동하지 않을 것으로 추정합니다.
게임 환경은 많은 Mesh Renderer 컴포넌트가 포함된 여러 게임 오브젝트로 구성되어 있습니다.
게임 오브젝트가 정적으로 표시된 Mesh Renderer 컴포넌트의 모든 메시가 조합되어 내비메시의 기반이 됩니다.

환경 게임 오브젝트를 정적으로 표시하는 방법은 다음과 같습니다.

이제 Level 게임 오브젝트와 모든 자식 게임 오브젝트가 정적으로 표시되었는데,
한 가지 예외를 설정해야 합니다.
레벨 디자인에는 그림자를 드리우는 데 사용되는 Ceiling Plane 게임 오브젝트가 있습니다.
이 게임 오브젝트를 베이크에 포함시키면 유령이 천장에서 걸어 다니게 됩니다.
공포감을 더해 줄 것 같긴 하지만 이 게임에서는 적용하지 않기로 합니다.

지금은 Level 프리팹이 아닌 씬 내에서 변경 사항을 적용하여
프리팹 설정을 변경하지 않고 오버라이드하고 있습니다.
기본 템플릿을 약간 변경할 때 이런 방법을 사용합니다.

내비메시 생성

내비 메시를 생성하는 과정을 베이킹이라고 합니다.
이 작업은 Window > AI > Navigation 창에서 수행합니다.

Bake 탭

베이크 설정은 내비메시의 구성 방식을 세부적으로 조정합니다.
첫 번째 설정은 내비메시를 통과할 에이전트(배회하는 유령들)인 내비메시 에이전트를 정의합니다. 에이전트의 크기와 에이전트가 이동할 수 있는 터레인을 구체적으로 정의합니다.

여기서는 Agent Radius 값만 조정하여
유령의 집을 배회하는 유령에 기본값보다 작은 값(0.25)을 설정합니다.

창 하단에서 Bake 버튼을 선택합니다.

베이크 프로세스는 컴퓨터 성능에 따라 수 초 내지 수 분이 소요됩니다.
베이크가 완료되면 씬 창의 환경에 옅은 파란색 메시가 덮입니다.
이 영역에서만 유령이 돌아다닐 수 있습니다.

Navigation 창이 열려 있고 활성화된 상태에서만 내비 메시가 표시됩니다.
인스펙터 탭으로 이동하면 씬 뷰에서 메시가 사라집니다.
내비메시가 보이지 않아도 그대로 적용되니 걱정하지 않아도 됩니다.

0개의 댓글