2. Building Scene - 장면 구성하기

Unity3D 2012. 6. 19. 11:39
반응형

Assets

Asset은 프로젝트에 포함된 모든 자원(텍스처, 모델, 소리, 스크립트 등등)을 의미한다.

GameObject

What are GameObjects? => 게임오브젝트란 무엇인가?

GameObject는 유니티에서 가장 중요한 오브젝트이며, 장면을 구성하고 있는 모든 오브젝트이다.

GameObject는 빈박스와 같은데, 이 박스안에 Component라고 부르는 다양한 속성(기능)들을 넣어서 우리가 원하는 형태의 오브젝트를 만들게된다.

Component

The GameObject-Component Relationship => 게임오브젝트와 컴포넌트의 관계

Component는 GameObject를 구성하는 속성들을 의미한다.

즉, GameObject는 수많은 Component들을 조합함으로써 게임에 필요한 오브젝트가 된다.

The Transform Component => 변환 컴포넌트

비어있는 GameObject를 만들면 기본적으로 Transform이라는 Component가 그 안에 담겨져있다. Transform Component는 모든 GameObject가 가져야 하는 가장 중요한 속성이며, 위치/회전/크기에 대한 정보를 가지고 있다.

Transform 속성중에 크기정보는 변경하지 않는게 좋다.

만약, 변경해야 한다면 Import Setting에서 변경하는게 좋다.

Import 후에 크기를 변경할 경우, 성능에 영향을 미칠 수 있다.

파티클 시스템은 Transform 속성의 크기에 영향을 받지 않는다.

수정하기를 원할경우에는 시스템의 Particle Emitter, Animator and Renderer를 이용하라.

Parenting => 육아 (부모자식 설정)

Parenting이란 GameObject간의 계층관계(부모자식관계)를 설정하는 것을 말한다. 설정하는 방법은 Hierarchy View에서 계층관계가 되기를 원하는 오브젝트끼리 드래그하기만 하면 된다.

Parenting을 설정했을 경우에는 자식 오브젝트의 Transform 속성은 부모 오브젝트의 Transform 속성을 기준으로 움직이게 되는데 이는 자식오브젝트를 부모오브젝트에 부착시키는 효과를 나타내게 된다. 이를 응용해서 플래시를 부모로 하고 spotlight를 자식으로 설정하면 플래시를 움직일때 마다 그에 맞춰서 spotlight도 움직이므로 손쉽게 플래시라이트 효과를 구현할 수 있다.

팁 : Parenting을 적용하기 전, 부모의 위치를 (0, 0, 0)으로 미리 맞춰놓는게 미래를 위해서 좋다.

Editing Components => 컴포넌트 수정하기.

GameObject는 다양한 Component를 가질 수 있고, 각각의 Component는 GameObject마다 서로 다른 값을 가지도록 할 수 있다. Component의 값은 Inspector창이나 스크립트를 이용하여 변경할 수 있다.

Component가 가지는 값은 일반값과 참조값의 2가지 형태가 있다. 일반값은 Component가 직접 가지고 있는 값이며 참조값은 외부에서 참조하게 되는 값이다. 예를 들면, Audio Source Component에서 Audio Clip 속성은 재생시킬 음악파일을 가리키는 참조값이다.

참조값을 지정하는 방법은 해당하는 오브젝트를 드래그하기만 하면 된다.

팁 : 플레이 도중에도 Inspector 창을 이용하여 Component의 값을 수정할 수 있다. 이는 게임에 바로 반영되지만, 플레이를 중지하면 수정하기 전의 값으로 되돌아간다.

Removing Components => 컴포넌트 제거하기.

Component를 제거하려면 마우스 오른쪽 버튼을 누른 후 Remove Component를 선택한다.

The Component-Script Relationship => 컴포넌트와 스크립트의 관계

스크립트는 저장하는 순간 하나의 Component로 등록이 된다.

스크립트를 작성할 때 전역변수(자바스크립트) 또는 멤버변수(C#)는 Inspector창에 속성으로 노출이 된다. (앞에 private을 붙이면 노출되지 않는다.)

Inspector

Inspector창에서 Inspector탭을 오른쪽 버튼을 클릭하면 메뉴가 나온다.

Lock

Scene또는 Hierarchy에서 다른 오브젝트를 선택해도 기존 선택이 유지되도록 한다.

Debug

모두 기본 인터페이스로 보여지며 숨겨진 속성(private)까지 나타나도록 한다.

Scene

Scene은 현재 게임화면에 보여지는 장면을 편집하는 곳이다.

Scene View Navigation => 장면 보기 탐색

화살표키 : 화면 움직이기(Shift를 누르면 더 빨리 움직인다.)

Alt + 왼쪽 드래그 : 선택된 오브젝트를 중심으로 회전.

Alt + 가운데 드래그 : 화면 움직이기.

Alt + 오른쪽 드래그 : 줌인 / 줌아웃.

마우스 오른쪽 버튼 누르기 : FPS 게임처럼 화면 제어.

Focusing => 특정 오브젝트로 초점 맞추기

1. Hierarchy에서 오브젝트 더블클릭.

2. Hierarchy에서 오브젝트 원클릭 후 Scene으로 마우스 이동 후 F 누느기.

Snapping => 간격 맞추기

Translate 툴로 오브젝트 이동할 때,

Ctrl키를 누르면서 이동 : Unit Snapping

Crtl+Shift키를 누르면서 이동 : Surface Snapping

V키를 누른 후 원하는 버텍스 선택하고 이동 : Vertex Snapping

View Modes

Draw Mode

Textured

게임에 보여지는 것처럼 텍스처와 표면을 보여준다.

Wireframe

메쉬의 와이어프레임만 보여준다.

Tex-Wire

Textured모드 위에 와이어프레임을 겹쳐서 보여준다.

Render Paths

오브젝트가 Foward Rendering을 사용하는지 Deferred Rendering을 사용하는지 보여준다.

Lightmap Resolution

그들이 올바른 해상도를 가지고 있다면 좀더 보기 쉽게 하기 위해 라이트맵의 해상도에 해당하는 중첩된 격자무늬를 보여준다.

Render Mode

RGB

게임에 보여지는 것처럼 모든 색상을 보여준다.

Alpha

렌더링되는 알파값을 보여준다.

Overdraw

화면상에서 중첩된 부분이 얼마나 겹치는지를 보여준다.

Mipmaps

이상적인 텍스처의 크기를 보여준다. 빨간색은 필요이상으로 크다는 의미이며 푸른색은 필요보다 더 작다는 의미이다.

Searching

복잡하게 구성된 화면에서 특정 오브젝트를 찾을 때 유용하게 사용할 수 있다.

검색은 이름, 타입, 레이블을 이용하며 검색 후 검색되지 않은 오브젝트는 자동으로 필터링 된다.

검색 전.

검색 후.

검색기능은 Scene, Hierarchy, Project창의 상단 부분에 있는 돋보기 아이콘을 이용하면 된다.

Prefabs

Prefab은 asset(프로젝트에 포함된 모든 자원을 일컫는 말)의 한 종류이다.

이것은 재사용가능한 GameObject이며, 어떤 장면이든지 장면마다 여러번 삽입될 수 있다.

Prefab에 수정을 가할 경우, 이것이 삽입된 모든 장면에서도 수정사항이 적용된다.

메뉴에서 Assets>Create>Prefab을 선택하면 비어있는 Prefab이 만들어 지는데 이곳에 Prefab으로 만들고자 하는 GameObject를 드래그해서 넣으면 된다.

Inheritance => 상속

Prefab을 장면에 드래그하면 인스턴스가 만들어지는데 Hierarchy창에서 보면 텍스트가 푸른색으로 나타나 일반 오브젝트인지 Prefab으로 만든 오브젝트인지 쉽게 구별할 수 있게 된다.

Prefab 원본을 수정하면 해당 Prefab으로 만든 모든 인스턴스에 수정이 적용되지만, 반대로 인스턴스를 수정할 경우에는 Prefab 원본에는 영향을 미치지 않고 혼자만 수정이 된다.

 

Hierarchy 창에 있는 인스턴스를 선택하면 Inspector 창에 Prefab 관련 메뉴가 3가지가 나온다.

Select

Prefab 원본을 선택하게 된다.

Revert

인스턴스에 가한 수정사항을 모두 취소한다.

Apply

인스턴스에 가한 수정사항을 Prefab 원본에 적용시킨다.

Imported Prefabs

주의 : asset 아이콘은 Prefab 아이콘과는 약간 다르다.

mesh asset을 불러왔을 때, 마치 Prefab처럼 보이지만 이는 Prefab이 아니다.

이것은 Prefab처럼 장면에 인스턴스를 만들 수 있지만 Prefab처럼 인스턴스의 수정사항을 원본에 적용시키는 것은 불가능하다. 이를 가능하게 하려면 장면에 만든 mesh asset의 인스턴스를 다시 Prefab으로 만들어야만 한다. 때문에 mesh asset의 인스턴스를 클릭하면 Inspector 창에 나오는 3가지 버튼 중에 Apply대신에 Edit버튼이 나오는데 이를 클릭하면 편집 프로그램 (마야, 맥스 등등)이 실행된다.

Lights

Lights(빛)은 모든 장면에 필수불가결한 요소이다.

메쉬와 텍스처가 장면의 모양과 형태를 정의하는 반면에 빛은 색상과 3D환경의 분위기를 정의한다.

장면마다 하나이상의 빛을 사용할 수 있지만 약간의 훈련이 필요하다.

빛은 GameObject > Create Other 에서 추가할 수 있다.

또한, 일반 게임오브젝트를 선택하고 Component > Rendering > Light 를 이용하여 빛의 속성을 가지도록 만들 수도 있다.

빛을 선택한 후 Inspector 창에서 색상을 바꾸는 것만으로도 게임의 분위기를 바꿀 수 있다.

이렇게 만들어진 빛은 실시간으로 계산되는 빛이다. 만약 빛이 변하지 않고 고정되는 형태라면, 성능을 위해서 Lightmapping을 사용하라.

Camera

카메라는 게임세상을 플레이어에게 보여주는 장치이다. 때문에 최소한 하나이상의 카메라가 장면에 존재해야 하며 여러개의 카메라는 분리된 화면 및 진보된 사용자 효과를 위해 사용될 수 있다.

Properties => 카메라 속성

Clear Flags

화면의 어느부분이 지워질지를 결정한다. 이는 여러개의 카메라를 사용해서 다른 게임요소를 그릴때 유용하다.

        

Skybox - 스크린의 비어있는 부분을 현재 카메라의 스카이박스로 그린다.

        Solid Color - 스크린의 비어있는 부분을 배경색상으로 칠한다.

        Depth Only - 플레이어의 총이 환경내부에 가려지지 않고 그려지기를 원한다면 환경을 그리는 카메라의 Depth를 0으로 설정하고 무기를 그리고자 하는 카메라의 Depth를 1로 설정하라. 그리고 무기를 그리는 카메라의 Clear Flags는 반드시 Depth Only로 설정해야 한다. 이것은 환경을 보여주는 것을 유지하지만 각 개체가 3D공간상의 어디에 존재하는지에 대한 모든 정보를 폐기한다. 총이 그려질 때, 총이 벽에 얼마나 가까이 있는지에 상고나없이 불투명한 부분은 그려지는 어떤것이라도 완벽하게 다룰 것이다.

        Don’t Clear - 이 모드는 일반적으로 게임에 사용되지 않는다.

Background

배경색상 (스카이박스가 없을 때 그려진다.)

Culling Mask

카메라에 의해 렌더링되는 오브젝트의 레이어를 포함 또는 생략한다. 오브젝트의 레이어는 Inspector 창에서 지정하라.

Projection

        Perspective - 원근 투영법.

        Orthographic   직교 투영법.

Size (직교투영일때만 나타나는다.)

직교투영에 사용되는 카메라 뷰포의 크기.

Field of View

카메라 조망 각도의 너비. 지역좌표계의 Y축을 따라 각도로 측정한다.

Clipping Planes

카메라로부터의 렌더링 거리.

        Near - 가장 가까운 거리.

        Far - 가장 먼 거리.

Normalized View Port Rect

카메라로 보는 모습을 스크린으로 옮길 때 사용할 스크린의 영역좌표(0-1).

        X - 가로시작 위치.

        Y - 세로시작 위치.

        W - 스크린 출력 너비.

        H - 스크린 출력 높이.

Depth

그리기 순서에 따른 카메라의 위치. 더 큰 값을 가진 카메라가 더 작은 값을 가진 카메라보다 우위에 있게된다.

Rendering Path

카메라에 의해 사용되는 렌더링 방법.

        Use Player Settings - Edit > Project Settings > Player 에 있는 값을 사용한다.

        Vertex Lit - 저사양 모드.

        Forward - 기본 모드. 재질마다 한번 그려진다.

        Deferred Lighting - Unity Pro만 가능. 빛 없이 한번, 빛과 함께 한번으로 총 2번 그려진다.

Target Texture

Unity Pro/Advanced만 가능. 카메라의 출력을 텍스처로 지정한다. 이를 사용하면 화면을 출력하는 카메라의 기능을 상실한다.

Normalized Viewport Rectangle

Normalized Viewport Rectangle을 이용하여 2명의 플레이어가 분리된 화면을 사용하는 것을 손쉽게 구현할 수 있다.

첫벗째 플레이어 카메라의 Y최소값에 0.5를 주고, 두번째 플레이어 카메라의 Y최대값에 0.5를 주면 된다.

Render Texture

스크린 전광판 같은 효과를 줄 수 있다.

Hints => 힌트

카메라는 다른 게임오브젝트처럼 다룰 수 있다.

레이싱 게임처럼 속도감을 높이기 위해서는 Field of View의 값을 높여라.

카메라에 RigidBody 컴포넌트를 추가하면 물리법칙을 따르게 된다.

장면에 포함시킬 수 있는 카메라의 수에 제한은 없다.

직교투영은 3D 유저 인터페이스를 만드는데 매우 좋다.

서로 깜빡이는 가까운 Surfaces를 경험하게 되면 Near Plane의 값을 가능한한 키워봐라.

카메라는 게임 화면과 텍스처에 동시에 렌더링하지 못한다. 둘 중 하나만이 가능하다.

Particle Systems

파티클 시스템은 3D 공간상에 안개, 불, 물방울 등을 표현하기 위해 렌더링 되는 2D 이미지들이다.

파티클 시스템은 Particle Emitter(파티클 생성), Particle Animator(파티클 이동), Particle Renderer(파티클 그리기) 의 3가지 컴포넌트로 구성된다.

정적인 파티클을 원한다면, Emitter와 Renderer을 함께 사용할 수 있다.

Particle Animator는 파티클을 다른 방향으로 이동하고 색상을 변경한다.

스크립트를 이용하여 파티클 시스템안의 각각의 파티클에 접근할 수 있다.

파티클 시스템이 게임월드와 상호작용하기를 원한다면 Particle Collider 컴포넌트를 추가하라.

Ellipsoid Particle Emitter => 타원체 파티클 방사기

GameObject > Create Other > Particle System 으로 생성시 기본으로 선택되는 에미터이다.

Sphere(구)안에 파티클들을 생성시킨다.

Properties

Emit

파티클을 지속적으로 생성한다.

Min Size

파티클이 생성될 때 최소 크기.

Max Size

파티클이 생성될 때 최대 크기.

Min Energy

각각의 파티클마다의 최소 유지시간. (초단위)

Max Energy

각각의 파티클마다의 최대 유지시간. (초단위)

Min Emission

매 초마다 생성될 파티클의 최소 개수.

Max Emission

매 초마다 생성될 파티클의 최대 개수.

World Velocity

월드 공간에서 파티클의 시작 속도.

Local Velocity

로컬 공간에서 파티클의 시작 속도.

Rnd Velocity

원래 속도에 추가되는 랜덤 속도.

Emitter Velocity Scale

파티클이 상속하는 에미터의 스피드의 총량.

Tangent Velocity

에미터의 표면을 지난 후의 파티클의 시작 속도.

Simulate In World Space

        선택하면, 에미터를 움직여도 이미 생성된 파티클은 원래 움직임을 유지한다.

선택하지 않으면, 에미터를 움직일 때 미리 생성된 파티클도 같이 움직인다.

One Shot

초당 생성되는 파티클을 모두 한번에 생성한다. (모두 사라지면 다시 생성.)

MinEmitterRange

구의 중심에 빈 영역의 크기를 지정한다. (구의 경계면에서 나타나게 할 때 사용.)

Mesh Particle Emitter

메쉬의 표면으로부터 파티클이 생성되며, 파티클이 다른 오브젝트와 복잡하게 상호작용할 때 사용된다.

Properties

Interpolate Triangles

        선택하면, 파티클은 메쉬의 표면 어디서나 생성이 가능하다.

        선택하지 않으면, 파티클은 메쉬의 정점에서만 생성이 가능하다.

Systematic

        선택하면, 메쉬에 정의된 정점의 순서대로 파티클이 생성된다.

        비록 드물게 정점의 순서이상의 직접적인 컨트롤을 가지고 있다고 하여도, 3D 모델링 툴은 프리미티브를 이용할 때 매우 체계적인 설정을 가지고 있다. 이 일을 하기 위해 메쉬가 순서대로 표면을 포함하는 것이 중요하다.

Min Normal Velocity

        메쉬로부터 바깥으로 던져지는 파티클의 최소 총량.

Max Normal Velocity

        메쉬로부터 바깥으로 던져지는 파티클의 최대 총량.

Particle Animator

시간의 경과에 따라 파티클을 이동시킨다.

Properties

Does Animatie Color

        선택하면, 파티클의 일생동안 색상을 변화시킨다.

Color Animation

        모든 파티클은 이 5가지의 색상으로 변화한다. (인생이 짧으면 더 빨리 변화한다.)

World Rotation Axis

        파티클의 회전에 사용되는 부가적인 월드 공간 좌표축. (주문효과를 만들 때 주로 사용.)

Local Rotation Axis

        파티클의 회전에 사용되는 부가적인 로컬 공간 좌표축. (주문효과를 만들 때 주로 사용.)

Size Grow

일생동안 파티클을 성장시키는 힘 (0이면 성장하지 않음, 0보다 작으면 점점 작아짐, 0보다 크면 점점 커진다.) Rnd Force는 파티클을 멀리 전파하는데, 그것은 종종 떨어지지 않을 정도의 크기로 성장시키는게 좋다. (바람을 시뮬레이트 하기 위해 상승하는 연기를 만드는 데 사용.)

Rnd Force

        매 프레임마다 파티클에 가해지는 임의의 힘. (연기를 살아있는 것처럼 보이게 하기 위해 사용.)

Force

        매 프레임마다 파티클에 가해지는 힘. 월드에 상대적으로 측정된다.

Damping

        매 프레임마다 파티클이 얼마나 느려질지를 정한다.

1을 주면 느려지지 않는다.

0을 주면 정지한다.

1보다 큰 값을 주면 점점 빨라진다.

Autodestruct

        선택하면, 파티클 애니메이터에 부착된 게임오브젝트는 모든 파티클이 소멸될 때 파괴된다.

Particle Collider

장면에 충동 영역과 상호작용하기 위해 사용된다.

Properties

Bounce Factor

        파티클이 다른 오브젝트와 충돌했을 때 가속되거나 느려지는 정도. Damping과 비슷하다.

Colision Energy Loss

        충돌했을 때 잃어버리는 에너지의 총량. 에너지가 0이 되면 파티클은 소멸한다.

Min Kill Velocity

        만약 충돌을 이유로 파티클의 속도가 Min Kill Velocity이하로 떨어지면 제거한다.

Collides With

        어떤 레이어와 충돌할지를 지정한다.

Send Collision Message

        선택하면, 모든 파티클은 스크립트를 통해 잡을 수 있는 충돌 메시지를 전달한다.

        파티클의 게임오브젝트와 파티클과 충돌한 오브젝트 모두에게 OnParticleCollision()메시지를 전달한다.

        총알을 시뮬레이트하고 대미지를 적용하기 위해 주로 사용된다.

        많은 파티클과 사용하면 느려지므로 현명하게 사용하라.

Particle Renderer

파티클 시스템을 스크린에 렌더링한다.

Properties

Materials

        각각의 파티클의 위치에 보여질 재질의 리스트. 참조 형식.

Camera Velocity Scale

        카메라 움직임에 기반한 파티클에 적용되는 스트레칭 총량.

Stretch Particles

        Billboard - 파티클은 카메라를 향해 렌더링된다.

        Stretched - 파티클은 그들이 움직이는 방향을 바라본다.

        SortedBillboard - 파티클은 깊이값에 의해 정렬된다. 혼합재질을 사용할 때 사용하라. 고비용.

        VerticalBillboard - 모든 파티클은 X/Z평면에 정렬된다.

        HorizontalBillboard - 모든 파티클은 X/Y평면에 정렬된다.

Length Scale

        Strectch Particles이 Strectched로 설정되면, 이 값은 파티클이 그들의 운동방향으로 얼마나 오래 있을지를 결정한다.

Velocity Scale

        Strectch Particles이 Strectched로 설정되면, 이 값은 어떤 파티클이 그들의 움직이는 속력에 기반하여 스트레치될 것인지의 비율을 결정한다.

UV Animation

        이들 중 하나가 설정되어 있다면, 애니메이션 타일 텍스처를 사용하기 위한 파티클의 UV좌표가 생성된다.

        X Tile - X 축을 교차하여 위치하는 프레임의 수.

        Y Tile - Y 축을 교차하여 위치하는 프레임의 수.

        Cycles - 애니메이션을 반복하는 횟수.

Animated textures

파티클 시스템은 애니메이션 타일 텍스처와 함께 렌더링 될 수 있다. 이것을 사용하기 위해서는 이미지의 격자밖으로 텍스처를 생성하라. 파티클이 그들의 생활주기를 지나면, 그들은 이미지를 통해 순환할 것이다. 이것은 파티클에 더 많은 삶을 추가하거나 작고 회전하는 부스러기 조각을 만드는데 좋다.

팁 : 파티클 렌더러와 함께 파티클 쉐이더를 사용하라.

반응형
: