Download presentation
Presentation is loading. Please wait.
1
유니티 튜토리얼 실습
2
Survival Shooter Tutorial
유니티에서 제공하는 학습용 에셋
3
기본 화면 구성
4
기본 화면 구성 Scene View 생성 중인 게임의 전체를 표시 및 조작하는 뷰
캐릭터, 광원 등 게임 오브젝트 의 모든 유형을 선택하고 배치하는 데 사용
5
기본 화면 구성 Game View 게임 속 카메라를 통해 보여지는 화면을 렌더링 실제 게임 플레이 화면을 보여줌
6
기본 화면 구성 Hierarchy Window 현재 씬의 게임 오브젝트들을 보임
7
기본 화면 구성 Project Window 프로젝트에 속한 에셋에 액세스하고 관리할 수 있음
8
기본 화면 구성 Inspector Window 게임 오브젝트에 포함된 컴포넌트들을 조작 및 확인할 수 있는 공간
9
기본 화면 구성 Transform Tools 카메라의 이동, 게임 오브젝트의 위치, 회전, 크기 변경
Transform Tools 카메라의 이동, 게임 오브젝트의 위치, 회전, 크기 변경 좌측부터 Q,W,E,R,T,Y 순으로 단축키가 매핑 됨
10
기본 화면 구성 Play/Pause/Step Buttons 게임을 재생, 멈춤, 프레임씩 진행이 가능
11
화면 이동 좌측 상단의 모양을 클릭하거나 단축키 ‘Q’를 누른 후 씬 뷰 에서 마우스 좌 클릭
Ctrl + Alt 를 누르며 마우스 좌 클릭 마우스 휠 키를 누르며 마우스 이동 마우스 우측 키를 누른 채 W,A,S,D,Q,E 키를 사용해 화면을 이동 - E는 화면을 위로, Q는 화면을 아래로 움직임
12
화면 회전 Alt 키를 누르며 마우스 좌 클릭 - 현재 포커스가 맞춰진 게임 오브젝트를 중심으로 화면이 회전 마우스 우 클릭
- 현재 자리에서 회전 (포커스는 씬 뷰에서 게임 오브젝트 좌 클릭 후 F 또는 하이라키 창에서 원하는 게임 오브젝트 더블 클릭)
13
화면 확대 및 축소 마우스 휠 키를 통해 확대 및 축소
마우스 우측 키를 누른 채 W,A,S,D,Q,E 키를 사용해 화면을 이동 - E는 화면을 위로, Q는 화면을 아래로 움직임
14
게임 오브젝트 이동 인스펙터의 Transform 컴포넌트의 Position 속성을 조작하여 이동
좌측 상단의 를 누르거나 단축키 W를 누른 후 X, Y, Z 축을 마우스 좌 클릭으로 잡아당겨 이동
15
게임 오브젝트 회전 인스펙터의 Transform 컴포넌트의 Rotation 속성을 조작하여 이동
좌측 상단의 를 누르거나 단축키 E를 누른 후 X, Y, Z 축을 마우스 좌 클릭으로 잡아당겨 이동
16
게임 오브젝트 크기 변환 인스펙터의 Transform 컴포넌트의 Scale 속성을 조작하여 이동
좌측 상단의 를 누르거나 단축키 R를 누른 후 X, Y, Z 축을 마우스 좌 클릭으로 잡아당겨 이동
17
GameObject, Component GameObject - 게임의 모든 객체, 게임을 구성하는 모든 것
모든 게임 오브젝트의 작동과 관련된 구성 요소 유니티에서 제공하는 컴포넌트를 사용하거나 직접 만들어 사용 할 수 있음
18
Prefabs 씬에 여러 번 재사용되는 NPC, 소품 또는 풍경과 같은 오브젝트 들에 사용됨
프리팹화된 게임 오브젝트들은 동시에 변경이 가능 개별적으로 변경도 가능
19
Life Cycle
20
Rigidbody 물리법칙을 적용하기 위한 컴포넌트 - 물리엔진의 제어를 받음
- 대표적으로 회전, 움직임, 중력, 충돌이 있음
21
두 물체 이상이 충돌했을 경우 충돌 판정을 일으킴
Collider 충돌체 두 물체 이상이 충돌했을 경우 충돌 판정을 일으킴
22
Vector3 X, Y, Z축의 float 값을 갖는 구조체 벡터에 관한 다양한 함수들이 존재함
23
Input.GetAxisRaw, Input.GetAxis
-1, 0, 1 을 반환 즉각적인 반응이 필요할 때 GetAxis -1 ~ 1 을 반환 부드러운 움직임, 가속이 필요할 때
24
Normalized 벡터의 정규화 - 크기가 1인 단위 벡터를 반환
(Vector3).normalized.magnitude를 통해 정규화된 크기를 볼 수 있음
25
Time.deltaTime 1초 / 초당 프레임 수 하드웨어의 성능에 따라 게임의 초당 프레임 수는 다름
유니티의 Update는 매 프레임마다 호출됨 하드웨어의 성능에 게임의 속도가 영향을 받음 Time.deltaTime을 곱하여 보정 프레임당 움직임을 시간당 움직임으로 변경 가능
26
Physics.Raycast 광선을 발사함 광선이 Collider 에 닿으면 true 닿지 않으면 false
광선이 닿은 물체의 정보를 RaycastHit를 통해 알 수 있음
27
layerMask 특정 콜라이더에 레이케스트가 반응할 수 있게 함
비트연산자 ~ 를 사용하면 특정 콜라이더만 제외하여 반응할 수 있게 함
28
Euler Angle, 짐벌락 짐벌락 겹친 축에 의해 의도치 않은 움직임을 보임 짐벌락의 원인 1. 세 축이 종속적
2. X->Y->Z 순차적 계산 (순서는 바뀔 수 있음)
29
Quaternion 세 개의 축이 동시에 움직여 짐벌락 문제를 해결 유니티는 내부적으로 쿼터니언을 사용하여 회전
복잡한 숫자를 기반이라 이해가 어려움 유니티에서는 오일러각을 쿼터니언으로 쉽게 변경 가능 ex) Quaternion.Euler
30
Animation Animator 이전에 사용되던 컴포넌트 옛 버전 에셋과 호환을 위해 남겨짐
31
Animator 캐릭터 또는 오브젝트의 애니메이션들을 배치 및 관리 파라미터 - 스크립트에서 애니메이션 전환을 조작하기 위함
- 파라미터 종류 Trigger : 애니메이션을 끝까지 마친 후 돌아옴 Bool : True, False시 애니메이션 즉시 변경 그 외 : Float, int
32
Animator override controller
캐릭터마다 애니메이션의 로직은 같지만 애니메이션은 다를 경 우 사용함 애니메이션의 로직을 그대로 사용한채 애니메이션만 변경 가능
33
Navigation 경로 찾기 알고리즘을 대신 구현 - 대표적인 예로 A* 알고리즘은 구현이 복잡하고 비용이 높음
이러한 문제를 해결하기 위해 경로 추적을 유니티 자체의 기능으로 만듦 NavMesh - static 으로 설정된 게임 오브젝트들의 정보를 이용하여 움직일 수 있는 곳, 움직일 수 없는 곳을 정함 Obstacle - static이 아닌 물체를 장애물로 인식시킬 수 있음
34
Nav Mesh Obstacle Static 이 아닌 게임 오브젝트를 동적 장애물로 인식
성능이 낮아 제대로 경로를 찾지 못할 가능성이 있음 Carve 옵션으로 실시간 베이킹 가능 - 단, 비용이 높음
35
OnCollisionEnter 충돌할 때 발생하는 이벤트 함수 충돌할 때 한번 발생
36
OnCollisionStay 충돌 중일 때 발생하는 이벤트 함수 충돌 중이라면 지속적으로 발생
37
OnCollisionExit 충돌 중에서 벗어날 때 발생하는 이벤트 함수 충돌 중을 벗어날 때 한번 발생
38
OnTriggerEnter 충돌 판정은 있으나 물리연산을 하지 않음
충돌하는 두 물체 중 최소 하나는 isTrigger 속성이 설정되어 있 어야 함 충돌할 때 한번 발생
39
OnTriggerStay 충돌 판정은 있으나 물리연산을 하지 않음
충돌하는 두 물체 중 최소 하나는 isTrigger 속성이 설정되어 있 어야 함 충돌 중이라면 지속적으로 발생
40
OnTriggerExit 충돌 판정은 있으나 물리연산을 하지 않음
충돌하는 두 물체 중 최소 하나는 isTrigger 속성이 설정되어 있 어야 함 충돌 중을 벗어날 때 한번 발생
41
Post Processing 후처리 기법 - 원본에 효과를 줌 Bloom - 빛 번짐 효과
Chromatic Aberration - 색수차 효과(프리즘과 비슷한 효과) Vignette - 가장자리 광량 부족 효과
42
Point Light 모든 방향에서 빛이 방출되는 3D 공간의 점 전구와 비슷한 효과를 냄
Similar presentations