728x90

이번 글에서는 "따라하면서 배우는 고박사의 유니티 기초" 인프런 강의의 3번째 강의 내용을 다루고 있다. 

 

Unity 3D 기본 용어

Project  하나의 게임, 콘텐츠, 어플리케이션
Scene 게임의 장면이나 상태를 저장하는 단위
하나의 게임을 씬 단위로 관리, 코드 이용해 이동 가능
씬을 변경할 경우 이전 씬은 모두 삭제된다.
GameObject 씬에 배치되는 하나의 물체를 지칭하는 단위
모든 게임 오브젝트는 위치/회전/크기를 제어하는 “Transform” 컴포넌트를 가지고 있다. 
게임 오브젝트에 원하는 컴포넌트를 추가하여 다양한 오브젝트 제작 가능
Component (C# Script) 게임 오브젝트에 부착할 수 있는 C# 스크립트 파일을 지칭하는 단위
게임 오브젝트에 컴포넌트를 부착하여 게임 오브젝트에 여러 기능을 부여
Asset  프로젝트 내부에서 사용하는 모든 리소스를 지칭하는 단위(Project View) 
Prefab Hierarchy View에 있는 게임 오브젝트를 파일 형태로 저장하는 단위
주로 게임 중간에 생성되는 게임 오브젝트를 프리팹으로 저장해두고 사용한다. 
동일한 게임 오브젝트를 여러 Scene이나 게임 월드 특정 장소에 배치할 때 Project View에 저장되어 있는 Prefab을 Drag & Drop하여 배치할 수 있다.
기획상의 변경이 있을 때 프리팹 원본을 갱신하게 되면 모든 씬에 복사되어 배치된 게임 오브젝트들도 원본과 동일하게 업데이트 된다.

 

Project, Scene, GameObject, Component, Asset 관계도 

 

 

Unity 3D 좌표 체계 

Unity 3D의 게임 월드는 원손 좌표계를 기준으로 x,y,x 축을 나타낼 수 있다. 또한 실제 게임에서는 2차원과 3차원을 나타낸다. 이때 차원은 카메라를 통해 조절할 수 있다. 

 


게임 오브젝트의 종류

게임 오브젝트 메뉴 

camera 기준으로 위는 생성 아래는 제어하는 메뉴

많이 사용되는 게임 오브젝트들을 생성할 수 있도록 메뉴화하여 제공하였으며 게임 오브젝트를 생성하는 메뉴와 제어하는 메뉴로 되어 있다. 

 

빈 오브젝트 (Empty Object)

빈 오브젝트는 말 그대로 모든 오브젝트가 가지는 Transform component만 붙어있는 오브젝트이다. 여기서 Transform component는 이동, 회전, 크기를 제어하는 component로 모든 게임 오브젝트가 기본으로 가지게 된다. 

 

3D Object 

게임 화면에 배치할 수 있는 3D 오브젝트로 3차원 도형 오브젝트, 화면에 3차원 텍스트를 표현하거나 3차원 지형 등등을 지원한다. 

대표적인 3차원 도형 오브젝트인 Cube의 경우를 예시로 들자면, 

Inspector view를 보면 component가 세가지 항목으로 나뉜다.

  • Mesh Filter component : Mesh 변수에 등록된 데이터에 따라 3차원 오브젝트의 외형이 다르게 구현된다.
  • Mesh Renderer component : 표면의 질감이 표현되며 3차원 오브젝트의 표면 색상을 나타낸다. 
  • Box Collider component : 게임 오브젝트의 충돌 범위를 설정한다. 

 

 

2D Object 

게임 화면상에 2D 이미지를 보이게 하는 게임 오브젝트로 Sprite 오브젝트가 게임 상의 2차원 이미지를 보이게 한다.

Sprite Renderer Component에 의해서 화면상에 2D 이미지를 보여줄 수 있다. 

 

이외에 다양한 오브젝트들은 다음과 같이 간단하게 표로 정리하였다. 

Effect 게임에 사용되는 여러 효과, 무기의 잔상, 선 그리기와 같은 오브젝를 제공
Audio 게임 내에서 재생되는 사운드와 관련된 오브젝트들 제공
Video 동영상 재생 오브젝트 제공
UI 사용자가 게임과 상호작용 할 수 있는 GUI 오브젝트들을 제공

 

 


Camera & Light 

Camera 

플레이어가 게임 월드를 볼 수 있는 눈 역할을 담당하며 Camera Component가 눈 역할을 담당하는데 여러가지 옵션이 존재한다. 대표적인 4가지를 다뤄보겠다. 

  • Clear Flags : 오프젝트가 존재하지 않는 빈 배경을 어떻게 결정하는 요소 
  • Projecton : 카메라의 시점을 나타내며, 2차원과 3차원 시점이 존재한다. 3ㅏ원인 경우에 원근 투영이 적용된다. 
  • Clipping Planes : 카메라가 오브젝트를 볼 수 있는 시야 거리
  • Viewprot Rect : 카메라가 본 것은 화면에 출력하는 영역 설정 변수로 최소 0에서 최대 1을 설정할 수 있다. 

 

 

Light 

현실세계의 빛 역할을 담당하며, 빛을 이용해 모델의 제질이나 색상을 다양한 형태로 보여주는데 사용된다. 

 

여기서 완전한 암흑 공간을 만들고자 할 때 window > Rendering > Lighting Settings 를 선택해 Lighting View를 열어 환경광과 주변광을 어둡게 설정하고 카메라 Clear Flags를 검은 화면으로 설정하면 완전한 암흑을 만 수 있다. 

 

 

Light Component

여러가지 옵션들이 존재하고 Type에 따라 4가지로 나뉘며, 아래의 값들이 바뀔 수 있다. 

 

Directional Light

오브젝트의 위치, 크기가 중요하지 않고, 방향이 중요한 빛으로 게임 월드에 존재하는 모든 오브젝트에게 동일한 방향으로 빛을 제공한다. 

Point Light

Range 변수에 설정된 값 만큼 구 형태로 방사되는 빛으로 주변을 밝게 만드는 전구, 모닥불과 같은 곳에 사용한다. 

 

 

Spot Light

Range, Spot Angle 변수에 설정된 값 만큼 원뿔 형태로 뻗어나가는 빛으로 오브젝트를 강조해서 비출 때나 가로등과 같은 곳에서 사용한다. 

 Area Light

오브젝트의 위치를 기준으로 전방 방향으로만 방출되는 빛으로 Area Light는 Baked 모드에서만 사용 가능하다. 

 

 

Mode

빛의 연산을 실시간으로 할지 미리 계산해두고 쓸지 결정하는 옵션으로 3가지를 볼 수 있다. 

  • ​Realtime : 빛이 비췄을 때의 밝기, 그림자 등의 연산을 실시간으로 함
    • 장점 : 게임 실행 중에도 빛의 이동이나 회전에 따라 환경이 변화
    • 단점 : 연산량이 많아 게임의 최적화에 큰 지장을 줌
  • Mixed : Realtime과 Baked를 섞어서 사용
  • Baked : 현재 상태로 빛 연산을 해두고 활용
    • 장점 : 연산을 미리 해두고 사 용하기 때문에 최적화가 잘 되어있음
    • 단점 : 게임 실행 중에 빛이 이동/회전해도 반영되지 않음

 

 

빛이 Baked 모드일 때 설정해야 하는 것들

빛의 영향을 받을 모든 게임 오브젝트의 Static 옵션을 contribute GI에 설정해야 한다. 또한 Window - Rendering > Lighting Settings에서 “Generate Lighting”으로 빛 데이터 Baked 할 수 있다. 

Intensity

빛의 세기를 나타내는 수치, 높을 수록 빛의 세기가 세진다.

Shadow Type

빛을 받은 오브젝트의 그림자 설정

Cookie & CookieSize

빛의 모양을 원하는 이미지의 모양으로 바꿀 수 있으며, Cookie에 등록된 Texture 모양, Cookie Size 크기의 빛 생성할 수 있다.  Texture 파일의 Wrap Mode가 Repeat로 설정되어야 그림과 같이 반복된 이미지를 출력한다. 

Texture 파일의 Wrap Mode가 Clamp로 설정되어야 그림과 같이 한번만 이미지를 출력한다.

이외에 빛에 대한 여러가지 옵션이 있다.

  • Draw Halo : 빛 주변으로 후광 효과 생성
  • Flare : 빛의 효과에 대한 모습
  • Render Mode : 중요한 빛과 중요하지 않은 빛을 구분
  • Culling Mask : 해당 레이어에 빛을 적용할지 적용하지 않을지 설정. 선택 해제된 레이어는 해당 빛의 영향을 받지 않는다.
 

2D 게임 오브젝트 Texture 출력

  1. 사용할 이미지 Asset의 Texture Type을 Sprite (2D and UI)로 설정
  2. GameObject > 2D Object > Sprite 생성
  3. 생성된 오브젝트의 Sprite Renderer Component에 있는 Sprite 변수에 이미지 assets 등록 

3D 게임 오브젝트 Texture 출력

  1. 사용할 이미지 Asset의 Texture Type을 default로 설정
  2. :Project View에서 Material asset 생성
  3. Material asset에서 image asset 등록
  4. 게임 오브젝트 > 3D 오브젝트 > 원하는 오브젝트 생성
  5. 생성된 오브젝트의 Mesh Renderer 컴포넌트에 있는 materials 변수에 material asset 등록
 
 

 

+ Recent posts