강께르의 개발일지

[유니티] 20211001_수업 5일차 본문

프로그래밍/유니티

[유니티] 20211001_수업 5일차

강께르 2021. 10. 4. 01:14

3d그래픽스의 카메라 역할

게임의 렌더링되는 것을 보여준다.

UI 렌더링이랑 월드 렌더링을 합친 결과를 게임 화면으로 보여준다.

 

Light

Baked <-> RealTime

프레임마다 렌더링할 그래픽을 계속 계산한다.

특정 조건에 맞는 계산을 미리 해놓고 계산된 결과를 가져다 쓴다.

Mode에 그 설정을 바꿀 수 있다. Mixed까지 포함

 

BakedLight 맵을 만드는 것이다.

빛 렌더링은 하드웨어가 많이 요구되는 렌더링이다.

최적화와 렌더링 품질을 올려주는 Light 맵 생성

추천하는 방법이라고 한다.

 

움직이는 오브젝트인가?

오브젝트 체크박스 중 static이 있다.

안 움직일 오브젝트인 경우 이 체크박스를 체크하면 된다.

 

mesh rendererskin meshrenderer

오브젝트 렌더링의 경우 정점을 움직이면 그 공백이 보일 수도 있다.

그냥 mesh는 공백이 생기는데 skin으로 단점을 상쇄한다.

-> skinning

 

Particle System

파티클? 표현하는 하나의 입자

연기, 물보라, 스파크 등

입자를 어떻게 생성할 것인가?

어ᄄᅠᇂ게 애니메이션될 것이냐

어ᄄᅠᇂ게 렌더링할 것이냐에 대한 세팅

-> 어지간하면 완성된 거 써라

 

3d 그래픽스 렌더링 최적화 상에서

정점이 많아서 성능이 떨어질 수 있다.

OverDraw : 색상에 관한 연산을 한번만 연산하면 좋은데

이미지가 겹쳐진 만큼 색상 연산을 많이 수행하기에 성능이 떨어지는 현상

적게 하려면? 미리 재생된 오브젝트를 재생시키는 것

생동감은 떨어지지만 성능은 좋아진다.

-> 핸드폰 요즘 성능 좋아져서 넣어도 괜찮다.

 

Collision

충돌체로 사용할 오브젝트를 따로 모아놨다.

물리엔진의 충돌처리하려는 것들

 

캐릭터

애니메이터 + 컨트롤러 스크립트 + 모델링

애니메이션 : 시간의 흐름에 따라서 어떤 정점이 어ᄄᅠᆫ 움직임을 하느냐

폴리곤, 정점을 단위 작업이면 효율이 안난다.

본을 움직이는 걸로 애니메이션을 편집한다.

 

애니메이션 파일을 따로 만들어놓고

애니메이션을 FSM으로 돌리는 것이다.

 

메테리얼

Albedo : 색상 혹은 이미지

노말맵에 들어가는 정점은 vector3

노말맵을 메테리얼을 빼면 입체감이 사라진다.

정점을 나중에 배치해서 입체감을 주는 게 아님.

 

Phisics 클래스의 RayCast

bool형 반환

Ray에 맞는 애들이 있으면?

collider 충돌을 판단

충돌했을 때의 정보를 담아서 RaycastHit에 반환

 

LayerMask 레이어로 게임 오브젝트를 관리

 

길찾기 컴포넌트

갈수있는 곳을 매쉬형태로 설정

navigation static으로 체크된 애만 길찾기에 포함

Bake로 만든다.

Agent : 돌아다닐 놈 영역에 대한 설정

계단처럼 끊어지는 영역을 어느 높이까지 갈지, 어떤 경사도까지 갈지 정할 수 있다.

 

Event 클릭을 통해서 vector3를 넘기는 과정을 해볼 것이다.

UnityEvent<> 데이터형으로 이벤트를 수행할 수 있다.

UnityEvent의 특정 행동을 수행하려면 Invoke를 하면 된다.

 

애니메이션 컨트롤러

특정 상태가 되어있다면 애니메이션을 재생하고 있다는 것

블랜더된 애니메이션

speed 파라미터에 의해서 애니메이션이 재생되는 것을 결정.

애니메이터 파라미터들

애니메이션에 대한 조건을 걸어줄 수 있다.

 

navi mesh agent가 길찾을 영역을 먼저 쫙 깔아놓고

navi mesh obstacle 있는 자리는 그 영역에서 빼버린다.

navi mesh obstaclecarve 필드를 체크하면 플레이 중에도 영역을 뺄 수 있다.

문 열리고 닫힐 때의 길찾기가 다른 게 예시.

 

ScriptableObject

스크립트를 에셋파일로 만들고 컴포넌트로 붙이는 게 아니라 특정 데이터 저장 파일로 이용하는 방법이다.