4 minute read

참고 링크들 북마크에 정리



유용한 생산성 에셋

TurboRename : 오브젝트 이름 일괄 변경

Layer Selection Tool : 특정 레이어만 필터링해서 확인 가능


S와 T를 a에 따라 블렌딩

(1 - a)S + aT


궤적을 미리 계산하는 방법

시뮬레이션에서 궤적을 미리 계산할 때 while 문을 사용한다.


Resources.Load(string) 시 리소스 경로

Resources.Load(string) 으로 리소스를 동적으로 로드하기 위해서는 폴더 깊이가 어디든 Resources 라는 폴더 아래에 리소스가 존재해야 한다.

Assets/Images/myrsrc/sprite 의 경우 경로를 그대로 적어주어도 로드되지 않는다.

Assets/Images/Resources/myrsrc/sprite 의 경우 경로를 myrsrc/sprite 와 같이 적어주면 정상적으로 로드된다.


내비게이션 기능 사용하기

내비게이션 메시가 적용되기 위해서는 Static (Navigation Static 체크) 오브젝트여야 한다.

Nav Mesh Agent 가 추가됐고 내비게이션 메시가 베이크 됐으면 초기 위치가 바닥 아래거나 하늘에 붕 떠있어도 시작하면 자동으로 바닥에 붙게 된다.

// Navigation 의 옵션들

Agent Radius : Agent 의 중심과 벽, 낭떠러지로부터의 최소 거리 (에이전트가 하나인 경우는 보통 에이전트의 Radius)

Agent Height : 에이전트가 지나가는데 필요한 최소 높이 (에이전트가 하나인 경우는 보통 에이전트의 키)
값이 4인데 동굴의 높이가 3이면 지나갈 수 없는 영역으로 판단한다.

Max Slope : 올라갈 수 있는 경사

Step Height : 올라갈 수 있는 높이 (계단 등)

// NavMeshAgent 의 옵션들

Base Offset : 오브젝트 중심의 높이이며, Scale 에 비례한다.

Speed : 최대 속도

Acceleration : 가속도 (멈출 때도 가속도를 받고 너무 높으면 스케이트를 탄 것마냥 미끄러지게 된다.)

Stopping Distance : 접근하는 최소 거리

Auto Braking : 켜져있으면 목적지에 도달하기 전에 감속을 하고, 꺼져있으면 도달한 후 감속을 한다. (이것을 끄면 패트롤 구현이 가능하다.)

agent.stoppingDistance = attackDistance;

// Start() 가 아닌 Update() 에서 매번 갱신해주어야 한다.
agent.destination = target.position;

// 잠시 멈춤
agent.isStopped = true;

// 경로 정보 초기화
agent.ResetPath();

- 참고
https://www.youtube.com/watch?v=YoYtIMT380E


파티클 시스템 옵션들

파티클 시스템의 입자들은 시간이 지나면 자동으로 사라진다.

Duration : 파티클 시스템의 총 작동 시간

Start Lifetime : 이 시간 이후에 방출된 파티클이 사라진다.

Start Speed : 날아가는 속도

Start Size : 파티클의 크기

Start Rotation : 시작시 회전값, 계속 회전하지는 않는다.

Emission - Rate over Time : 초당 만들어지는 개수

Max Particles : 한 번(Duration) 동안 방출할 수 있는 최대 입자 개수

Shape : 방출 공간의 모양을 설정

Noise : 노이즈를 주어 이동을 불규칙하게 설정


PBR 의 특징

Albedo : 물체의 고유한 색
Metallic : 0 ~ 1
// 0 비금속 : (받은 빛의 색을 반사한다.)
// 1 금속 : 빛을 정면에서 받는 부분의 색은 Albedo 와 같다. (나의 색을 반사한다.)
Smoothness : 0 ~ 1
// 0 : 거칠다
// 1 : 매끄럽다

Diffuse (난반사) : 물체에 부딪힌 빛이 난반사
Specular (정반사) : 물체에 부딪힌 빛이 정반사

노멀 맵 : 폴리곤의 굴곡을 텍스처로 투사시켜 컴퓨터에게 착시를 주는 것
각 픽셀마다 빛 반사의 기준이 되는 다른 노말 정보를 갖고 있다.

Emission : 자체 발광 효과


라이트 맵핑

스태틱 (Static 체크) 오브젝트에만 적용된다.

미리 라이트에 대한 계산을 해놓기 때문에 플레이 시 실시간 계산 부담을 줄여준다.

라이트 옵션
- Realtime : 이 라이트는 Dynamic 오브젝트에만 영향을 미친다.
- Baked : 이 라이트는 라이트맵을 구울 때에만(Static 오브젝트에만) 영향을 미친다.
- Mixed : 둘 모두에서 사용된다.

라이트(직접광) 종류
- 디렉서녈 (방향) : 태양광 (기본)
- 포인트 (방향 X, 도달 거리) : 전구처럼 구에서 방사
- 스포트 라이트 (방향, 도달 거리, 각도) : 무대 위 조명
- Area 라이트 : 전광판, 일정한 면적에서 방사

반사광(간접광) 종류
- 주변광 : 물체에 반사되서 생기는 빛
- Skybox

그림자
- Hard Shadows : 정확히 정사영
- Soft Shadows : 경계선을 부드럽게 표현
- No Shadows : 그림자 없음


프로브

라이트 프로브 : 라이트 맵 사용시 Dynamic 오브젝트는 주변 Bake 라이트의 효과를 받지 못하기 때문에 대안으로 사용됨

리플렉션 프로브 : 정육면체 범위를 갖으며, 이 범위 내에 있는 오브젝트가 반사를 일으키는 재질(Smoothness 가 높은 상태)이면 그 오브젝트는 범위 내의 모습을 캡쳐해뒀다가 보여주게 된다.

리플렉션 프로브가 없으면 Skybox 만을 반사한다.


포스트 프로세싱

카메라에만 적용되는 효과이다.

Post Process Volume 내에 존재하는 동안에만 적용되고, Is Global 에 체크하면 전역으로 적용된다.

Post Process Volume 오브젝트의 레이어와 카메라의 Post Process Layer 컴포넌트의 레이어가 동일해야 한다.

안티 엘리어싱 : 격자/계단 완화

앰비언트 오쿨루젼 : 환경광에 노출되는 정도를 조절
값이 높아질수록 구석, 물체가 맞닿은 부분이 어두워진다.

Bloom : 뿌옇게 번져 보인다. (네온사인 등에 사용)

Depth of Field : 거리에 따라 초점을 맞춰 배경을 뿌옇게 등
- Focus Distance : 초점을 맞출 거리
- Focal Length : Distance 기준 선명하게 보일 허용 범위
- Apeture : 빛의 양을 조절

Vignette : 집중할 수 있도록 주변이 어두워진다.


씨네머신

Playable Director (PD) : 감독
Timeline : 대본
씬 : 촬영 공간
버츄얼 카메라 (vcam) : 컷, 장면
씨네머신 브레인 : 카메라
게임 오브젝트 : 배우, 소품

// 네임스페이스
using UnityEngine.Playables; (Playable Director)
using Cinemachine; (Chinemachine Brain)

pd = GetComponent<PlayableDirector>();

pd.time (현재 재생 시간)
pd.duration (전체 재생 시간)

PD 의 Wrap Mode
- None : 종료 후 처음으로 돌아간다.
- Hold : 종료 후 처음으로 돌아가지 않는다.
- Loop : 반복한다.


터레인

풀은 2D 텍스처이지만 빌보드로 작동한다.
나무는 3D 이지만, 설정된 거리를 넘어가면 2D 텍스처 빌보드가 된다.

터레인은 Height Map 이라는 Raw 파일로 저장되는데,
512x512 크기의 터레인을 저장하면 513x513 크기의 맵이 생성된다.

각 픽셀은 그 높이의 버텍스를 뜻하고, 그 버텍스들을 이어서 메쉬를 생성하려면 1만큼이 더 필요하다.

터레인은 Height Map 을 사용하기 때문에 역경사(아래 공간이 빈) 지형을 만들 수 없다.

터레인은 Height Map 으로 이루어졌기 때문에 이동은 되지만, 회전은 되지 않는다.

Categories:

Updated: