Chapter 1. 캐릭터 움직이기 & 지형 제작
지형 제작
Hierarchy - Create - 3D Object - Terrain
이렇게 Terrain을 만들면 아주 큰 개활지가 생긴다. 이렇게 유니티에서는 직접 개발자가 지형을 제작할 수 있는 툴을 제공한다. Terrain은 피봇(중심점) 위치가 중심점이 아님 모서리 (0, 0, 0) 기준으로 찍혀 있는게 디폴트 상태다.
🙋♀️ Terrain 컴포넌트 소개
Terrain을 3D 오브젝트로 생성하면 자동으로 Terrain 컴포넌트가 붙게 된다.
두 번째 탭 - Paint Terrain
Raise or Loser Terrain
지형의 고도 높이고 낮추기
- 브러쉬를 선택한 후 Terrain 오브젝트에 좌클릭하면 지형의 높이가 높아진다!
- Shift를 누른채 좌클릭하면 처음 지형으로 돌아간다.
- 낮게 하고 싶은 지형이 있다면 다른 지형들의 높이를 올려주면 된다.
- Opacity로 강도를 조절할 수 있다.(천천히 올라간다.)
Paint Holes
지형 Terrain에 구멍을 낼 수 있다.
Set Height
Terrain의 높이를 제한하거나 설정한다. 👉 완만하고 평평한 높이를 구현하기에 적절하다.
- 예륻 들어 Height 값을 10 으로 하면 아무리 brush로 지형의 고도를 높여도 10 까지만 높아진다.
- 완만하고 평평한 고원같이 높이가 올라간 것을 볼 수 있다.
- 즉, 높이가 최대 10으로 고정된다. 10을 넘을 수 없다.
- Flatten All 을 누르면 전체 Terrain의 높이가 현재 설정되어 있는 Height 값으로 설정되며 전체적으로 평평해진다.
- 즉, 예륻 들어 Height 값을 10 으로 되있다면 Terrain 오브젝트의 Y 위치 값이 10이 된다. 그리고 평평해진다.
Smooth Height
Terrain 지형을 부드럽고 매끄럽게 만든다. 뾰족뾰족한 부분을 스무스하게 만들어준다.
높낮이를 줄이기 보단 인근 영역과 비슷하게 맞추어 부드럽게 만들고 급겹한 변화가 덜 나타나게 한다.
Paint Texture
Terrain 에 풀, 눈, 모래 같은 텍스처를 그린다.
- 텍스처 파일을 Tile로서 붙인다. 직접 텍스처를 Terrain에 그릴 수도 있다.
- 텍스처는 포토샵이나 어피니티 포토 등, 기타 툴을 이용해서 2의 n승 사이즈의 PNG 파일로 쉽게 만들 수 있다.
- 텍스처 추가하기
- Create Layer 로 원하는 텍스처 PNG 파일로 텍스처 레이어를 추가할 수 있다.
- Metalic 으로 광택 정도를 나타낼 수 있고 Smoothness 를 올려주면 빛이 강조가 된다. (전체적으로 빛이 고루게 퍼진다.)
- O
- Tiling Setting 로 텍스처가 반복되어 삽입될 Tile의 해상도를 설정할 수 있다.
- Tile 의 해상도가 클 수록 텍스처가 확대되어 반복 될 것이고 해상도가 작을 수록 텍스처가 촘촘하게, 작게 반복될 것이다.
- Opacity 값이 높을 수록 브러쉬로 칠하는 텍스처 레이어가 강한 강도로 그려지고, 낮을 수록 흐리게 그려진다.
돌 표면의 텍스처 파일로, 바위 표면을 나타낼 텍서츠 레이어를 추가로 만든 뒤, 텍스처를 Terrain 표면에 그려주었다.
텍스처 레이어는 📂Assets/Texture 에 저장된다. 생성했던 레이어를 Add Layer로 불러올 수 있다.
세 번째 탭 - Paint Trees
Terrain 위에 나무를 추가할 수 있다.
나무 오브젝트 만들기
Hierarchy - Create - 3D Object - Tree
Tree 오브젝트를 처음 생성하면 이렇게 생겼다!
- Tree Seed
- 나무의 키와 뻗는 방향 꺾인 방향 등등을 랜덤하게 지정하는 Seed.
- Area Spread
- 해당 나무의 영역. 나무들끼리 이 영역은 중첩되지 않는다. 이 영역이 좁을 수록 나무들끼리 서로 촘촘하게 있을 수 있다.
- LOD Quaility
- LOD 👉 Level of Detail 의 약자로, 시스템 부하를 줄이기 위해 만들어진 최적화 기술이다. 해당 오브젝트가 카메라와 거리가 멀어질 수록 디테일을 낮춘다.
- Ambient Occlusion
- 체크하면, 카메라에 해당 Tree 오브젝트가 안보일 때, 모든 기능을 꺼지게 만든다.
- 나무가 카메라 화면에 안나올 땐, 바람에 흔들린다거나 하는 효과를 줄 필요가 없다.
- 성능상 유리해지니 딱히 이유가 없으면 체크 상태로 두자.
- AO Density
- Ambient Occlusion을 정도를 설정. 카메라에 안보일 때 기능을 얼만큼 끌지.
- Material
- 나무 기둥의 Material.
- 색깔, 명암, 질감 등등을 입힐 수 있다.
나뭇가지 추가하기
맨 밑의 아이콘은 이 하나의 Tree 오브젝트 전체를 선택하는 아이콘이다. 사진 상 중간에 있는 아이콘은 나무의 가운데 기둥인데 이를 클릭하고 나뭇가지를 추가하니 이 기둥을 부모로 하는 나뭇가지가 위와 같이 추가되었다. 진짜 알고리즘에서 배우는 Tree 자료구조와 같다!
- 원하는 나뭇 가지 노드를 클릭한 후
- Frequency
- 해당 나뭇 가지의 개수
- 두번재 나뭇가지 노드의 Frequency를 10 으로 설정해서 10 개의 나뭇가지가 생겨났다.
- Seek Sun
- 해당 나뭇 가지 모양을 하늘로 치솟게 한다.
- 정도를 높게할수록 수직에 가까워진다.
- 해당 나뭇 가지 모양을 하늘로 치솟게 한다.
- Length
- 나뭇 가지의 길이
- Frequency
잎 추가하기
- 마찬가지로 Frequency로 잎의 부모가 되는 나뭇가지의 노드로부터 피어난 잎의 개수를 조절할 수 있다.
- Geometry Mode 에서 잎의 모양을 지정할 수 있다.
- Plane - 평평한 모양
- Cross - 십자가 모양
- Mesh - 원하는 Mesh 잎 모양을 할당할 수 있다.
- size 에서 잎의 사이즈를 조정할 수 있다.
- 사진과 같이 구간을 지정해두면 해당 구간 내에서 랜덤한 사이즈 값을 가지게 된다.
프리팹화 하기
그냥 오브젝트를 📂Assets 폴더에 드래그 앤 드롭하면 된다.
- 이제 찍어낼 수 있는 나무 프리팹이 생성되었다.
- 이제 이 생성한 나무 프리팹을 Terrain의 Paint Trees 에 가져와보자.
Terrain에 나무 그리기
위와 같이 Edit Trees 를 클릭하여 만들어둔 나무 프리팹을 추가한다.
브러쉬로 Terrain 위에 프리팹으로 할당한 나무를 이렇게 그릴 수 있다! density로 밀도를 높이면 브러쉬질 할 때마다 나무가 더 많이 추가된다. Tree Height의 범위를 조절해주면 맵 크기에 맞게 배치할 수 있다.
네 번째 탭 - Paint Details
풀이나 흙 같은 Terrain 의 디테일한 부분을 설정할 수 있다.
- 풀 텍스처 추가하기
- Edit Details - Add Grass Texture
풀의 텍스처 PNG 이미지를 할당하면 해당 이미지로 풀 텍스처를 표현할 수 있다. 풀 하나 하나의 최대 최소 크기도 지정할 수 있다.
이미 그려진 풀은 Shift 누르고 그리면 다시 지울 수 있다.
다섯 번째 탭 - Terrain Settings
- ⚙️ Terrain Setings 기능 예시
- Terrain의 해상도 크기 조절
- 현재 Terrain Width와 Length를 100, 100으로 해둠
- 바람의 세기
- 바람에 의한 풀의 세기
- 거리에 따른 디테일 표현
- 그림자
- Terrain의 해상도 크기 조절
만들어 본 맵에 플레이어를 배치 시켜 보았다. 😀
'C# > UNITY_FPS 3D 서바이벌게임' 카테고리의 다른 글
Chapter 2-2. 무기 : 총 구현 2️⃣ (재장전, 정조준, 반동) (0) | 2024.03.11 |
---|---|
Chapter 2-1. 무기 : 총 구현 1️⃣ (애니메이션, 파티클, 오디오) (0) | 2024.03.11 |
Chapter 1-4. 캐릭터, 지형 : 팔 구현, 팔 애니메이션, 서브 카메라 (0) | 2024.03.11 |
Chapter 1-2. 캐릭터, 지형 : 달리기, 부드럽게 앉기, 점프 (0) | 2024.03.11 |
Chapter 1-1. 캐릭터, 지형 : 마우스, 키보드에 따른 이동과 회전, 1인칭 카메라 (0) | 2024.03.11 |