C#책 공부일지 : 3D공간, 프리펩, Light
이제 프로젝트를 만들면서 배워본다.
Hero Born 원페이지
콘셉트: 게임 프로토타입은 FPS의 특징을 살짝 지니면서 적을 교묘히 피하고 체력 아이 템을 수집하는 데 초점을 둔다.
게임 플레이: 기본 메카닉은 플레이어의 시야에서 적보다 한 발 앞서 정찰하고 필요한 아이템을 수집하는 것이다.
전투는 적에게 발사하는 것으로 이뤄지며, 자동으로 공격 반응을 트리거한다.
인터페이스: 카메라를 제어할 때는 마우스를 사용하고, 이동을 제어할 때는 WASD 키나 화살 표 키를 사용한다. 총을 쏠 때는 스페이스 바를 사용하며, 아이템을 획득하려면 오브젝트에 닿으면 된다.
간단한 헤드업 디스플레이(HUD, Head-Up Display)에는 수집된 아이템, 남은 총 알, 체력 바가 표시된다.
아트 스타일: 효율적이고 신속하게 기본 요소만 개발할 때는 레벨과 캐릭터 아트 스타일이 모 두 프리미티브(Primitive) 게임 오브젝트가 될 것이다. 하지만 나중에 필요하다면 3D 모델이나 터레인(Terrain) 환경으로 교체할 수도 있다.
용어
프리미티브(Primitive): 기하학적 개체
티레인(Terrain):3D지형을 생성, 편집하는 기능
화이트 박싱: 초기 단계에 간단한 프로토타입이나 모형을 제작하는 것

Plane(평면) 프리미티브를 생성한다. 이름을 Ground로 바꾸고 이 게임 오브젝트의 Transform 컴포넌트를 이용해 scale값을 모두 3으로 맞춘다.

3D공간의 사고방식
Unity는 2D, 3D모두 지원한다. 3D에서, x, y, z 축이 있으며 Scene패널에서 x, y, z 축이 빨강, 초록, 파랑으로 표시된 기하학적 모양의 아이콘이 있다.
위의 Ground의 Transform컴포넌트에서 Position은 오브젝트의 위치, Rotation은 각도 조절, Scale은 크기를 결정한다.
Material을 생성하고 Ground에 드래그앤드롭을 통해 땅의 색(Albedo에서 변경)을 입힌다.

Unity 에디터 툴 바

1. 손: 마우스를 클릭한 후 드래그해 씬에서 위치를 보여주거나 변경할 수 있다.
2. 이동: 각각의 화살표를 드래그해 x, y, z축에 따라 오브젝트를 이동할 수 있다.
3. 회전: 각각의 마커를 돌리거나 드래그해 오브젝트의 회전을 조정할 수 있다.
4. 스케일: 특정 축으로 드래그해 오브젝트의 크기를 수정할 수 있다.
5. 사각 트랜스폼: 이동, 회전, 스케일 기능을 하나의 패키지로 결합한 도구다.
6. 트랜스폼: 오브젝트의 위치, 회전, 스케일에 모두 액세스 할 수 있다.
프리팹(Prefab)
재사용할 수 있는 게임 오브젝트이다.
프리팹은 클래스 템플릿과 같으며 씬에서 사용된 각 사본은 해당 프리팹의 개별 인스턴스가 된다.
한 구조와 내용을 가진 여러 개의 게임 오브젝트를 손쉽게 생성하고 관리할 수 있다.
프리팹은 게임 개발 작업을 효율적으로 만들고 유지보수하기 쉽게 해 주고
유니티에서 코드와 에셋을 분리하여 작업을 진행할 수 있는 장점을 제공한다.
Ground를 생성했다면 주변 구조물을 생성한다. 양 옆의 벽을 생성하고 동일한 장벽을 생성한다 1개의 장벽을 만든 후 프리팹화 한다.

이후 3개의 장벽을 추가로 만들어 지형을 만든다.
Rotation을 이용해 경사로까지 만든다.

조명
유니티에서 조명은 광범위 하지만 크게 두 가지로 나뉜다.
1.Realtime 조명
모든 프레임에서 계산된다. 모든 오브젝트가 현실감 있는 그림자를 생성하고 현실세계의 광원처럼 작동한다.
하지만 조명수에 따라 게임이 느려지고 높은 비용이 든다.
2.Precomputed 조명
텍스처에 씬의 조명을 저장한 다음 씬에 적용하거나 Bake 한다.
컴퓨팅 파워를 절약할 수 있다. 하지만 조명이 고정된 상태이므로 오브젝트가 움직일 때 현실적인 반응이나 변화는 없다.

여러 조명의 옵션이 있다.
방향광(Directional Light )
햇빛과 같은 자연광을 표현하기에 적합하다. 방향광은 씬에서 실제 위치는 없지만, 항상 같은 방향에서 모든 곳을 비추는 효과를 낸다.
점 광원(Point Light)
기본적으로 떠다니는 구체 형태이며, 중심점에서 모든 방향으로 빛을 보낸다. 점 광원은 씬에서 위치와 강도를 정의한다.
스폿 광원(Spot Light)
지정된 방향으로 빛을 보내지만, 각도를 고정해 씬의 특정 영역에 초점을 맞춘다. 현실에서 스포트라이트나 투광 조명으로 생각하면 된다.
면 광원(Area Light)
직사각형 모양으로, 직사각형의 한 면에서 표면의 빛을 발산한다