검색결과 리스트
글
레벨 아트와 라이팅 설정
라이트맵 : '오브젝트가 빛을 받았을 때 어떻게 보일지' 미리 그려둔 텍스처라고 할 수 있는데 라이트맵의 동작은 물체의 표면 위에 데칼을 입히는 것으로 이해할 수 있음. 라이트맵은 오브젝트가 빛을 받았을 때의 모습을 미리 계산해 생성한 텍스처로 라이브맵 생성을 '라이트맵을 굽는다'로 표현함
라이팅 설정하기(유니티 상단 메뉴의 Window > Rendering > Lighting Settings -> 라이팅 창 하단의 Auto Generate 체크를 해제해 라이트맵을 원할 때 자동으로 구울 수 있음)
환경광 설정하기(Environment Lighting의 source를 color로 변경 > Ambient Color의 컬러 필드 클릭 및 변경)
글루벌 일루미네이션(GI) : 물체의 표면에 직접 들어오는 빛뿐만 아니라 다른 물체의 표면에서 반사되어 들어온 간접광까지 표현
실시간 글루벌 일루미네이션 - 빛의 세기와 방향 등이 달라졌을 때 그 변화를 간접광에 실시간으로 반영
베이크된 글로벌 일루미네이션 - 고정된 빛에 의한 간접광을 라이트맵으로 구워 게임 오브젝트 위에 미리 입히는 것 으로 반영된 간접광 효과는 게임 도중에 실시간으로 변하지 않음
플레이어 캐릭터와 애니메이션 구성
블렌드 트리(애니메이터 창에서 마우스 오른쪽 클릭 > Create State > From New Blend Tree 클릭) : 블렌트 트리는 여러 애니메이션 클립을 파라미터값에 따라 적절이 혼합하는 모션으로 블렌드 트리 사용 시, 여러 애니메이션 클립을 현재 상태에 알맞게 섞어 사용 가능
아바타 마스크 : 애니메이터 컨트롤러에 두 개의 레이어가 있을 때 각 레이어에서 재생하는 애니메이션은 위에서 아래 순서로 덮어쓰기(override) 방식으로 적용되는데 애니메이터의 레이어별로 부위를 다르게 적용하려면 아바타 마스크(Avaatar mask)를 설정해야 함
휴머노이드 릭(Humanoid Rig) - 사람 형태의 3D 모델은 대부분 휴머노이드 타입으로 리깅됨. 유니티에서 휴머 노이드 타입으로 리깅된 3D 모델은 체형이 달라도 애니메이션 클립이 호환되며 실체 골격의 정보가 3D 모델에 포함되어 있으믈 애니메이션 클립을 특정 신체 부위에만 적용 가능
아바타 마스크 - 휴머노이드 타입의 3D 모델에서 특정 신체 부위에만 애니메이션 적용 가능
입력과 엑터 나누기 : 하나의 스크립트에 캐릭터를 움직이는 코드와 사용자 입력을 감지하는 코드를 함께 작성하는 것이 아니라 입력과 입력에 의한 행위(액터)를 나누어 전체적인 코드양을 줄이고, 필요할 때마다 입력 감지 코드를 쉽게 수정할 수 있음
프로퍼티 : 변숫값을 읽거나 쓰는 과정에서 유연한 처리를 삽입할 수 있는 클래스 멤버로 변수처럼 보이지만 변수가 아닌 특수한 형태의 메서드. 프로퍼티를 사용하면 어떤 값을 다른 맥락에 맞춰 제공할 수 있으며, 프로퍼티를 이용해 값을 읽고 할당하는 처리에 '필터'를 추가하면 외부에서 잘못된 값을 할당했을 때 내부에서 걸러낼 수 있으므로 데이터를 안전하게 다루는 데 도움이 됨. 프로퍼티의 get과 set 접근자는 접근 권한을 각각 다르게 부여 가능
시네머신 추적 카메라 구성하기
시네머신 : 카메라의 움직임을 손쉽게 제어하는 유니티 공식 패키지로 레이싱, 어드벤터 등 장르마다 고유한 카메라 동작을 별다른 스크립트 작성 없이 구현 가능

시네머신의 원리 : 시네머신은 브레인 카메라와 가상 카메라로 나누어지는데 브레인 카메라는 씬에 하나만 존재하며, 가상 카메라는 브레인 카메라의 분신 역할로 씬에 여러 개 존재 가능.
시네머신 카메라 : 데드존, 소프트존, 하드 리밋으로 카메라 추적의 강도 조절 가능
인터페이스
C# 인터페이스 : 어떤 메서드를 구현하도록 강제하는 제약
느슨한 커플링(loose coupling) : 어떤 코드가 특정 클래스의 구현에 결합되지 않아 유연하게 변경 가능한 상태를 가리키는 용어
탄알 만들기
코루틴 : 유니티의 코루틴(coroutine) 메서드는 대기 시간을 가질 수 있는 메서드로 IEnumerator 타입을 반환해야 하며, 처리가 일시 대기할 곳에 yield 키워드를 명시해야 함
레이캐스트(Raycast) : 보이지 않는 광선을 쐈을 때 광선이 다른 콜라이더와 충돌하는지 검사하는 처리로 레이캐스트를 실행했을 때 레이가 콜라이더를 가진 게임 오브젝트와 충돌하면 RaycastHit 타입으로 충돌 정보가 생성되며, 이는 레이가 충돌한 게임 오브젝트, 충돌 위치, 충돌한 표면의 방향 등을 알 수 있음
슈터 만들기
-> 어떤 애니메이션을 사용하든 상관없이 캐릭터 손의 위치가 항상 총의 손잡이에 위치하려면 애니메이터의 IK를 사용해야 함
FK : 캐릭터 애니메이션은 기본적으로 FK(Forward Kinematics = 전진 운동학)로 동작함. FK에서는 부모 조인트(Joint)에서 자식 조인트 순서로 움직임을 적용. FK는 큰 단위의 관절에서 세부적인 관절 순서(어깨에서 손)로 움직임을 적용하기 때문에 손의 위치를 먼저 정하고 거기에 맞춰 애니메이션을 변형할 수 없으므로 손의 위치로 물건을 순간이동해야 함
IK(Inverse Kinematics = 역 운동학) : IK는 자식 조인트의 위치를 먼저 결정하고 부모 조인트가 거기에 맞춰 변형됨으로 하위 조인트의 최종 위치를 먼저 결정할 수 있음. IK를 사용하려면 애니메이터 컨트롤러의 레이어에서 IK Pass 설정이 켜져있어야 함.
다형성
상속 관계에서 다형성 : 다형성은 문자 그대로 해석하면 여러 형태라는 뜻으로 C#에서 다형성은 자식 클래스 타입을 부모 클래스 타입으로 다룰 수 있게 함
오버라이드 : 다형성을 적용하여 같은 이름의 메서드가 서로 다른 방식으로 동작하게 할 수 있는 방법 중 하나로 부모 클래스에서 작성한 메서드를 자식 클래스에서 재정의하는 것
이벤트 : 연쇄 동작을 이끌어내는 사건으로 이벤트 자체는 어떤 일을 실행하지 않지만 이벤트가 발생하면 이벤트를 구독하는 처리들이 연쇄적으로 실행됨. 이벤트 사용 시 어떤 클래스에서 특정 사건이 일어났을 때 다른 클래스에서 그것을 감지하고 관련된 처리를 실행할 수 있음. 이벤트 구현 시 이벤트와 이벤트에 관심이 있는 이벤트 리스너(Event Listener)로 오브젝트를 구분
견고한 커플링 해소 - 이벤트는 자신을 구독하는 메서드의 구현과 상관없이 동작하므로 '견고한 커플링' 문제를 해소함
내비게이션 시스템
내비게이션 시스템 : 유니티는 한 위치에서 다른 위치로의 경로를 계산하고 실시간으로 장애물을 피하며 이동하는 인공지능을 만드는 내비게이션(Navigation) 시스템을 제공
내비게이션 시스템에 사용되는 오브젝트 : 내비메시(NavMesh) - 에이전트가 걸어다닐 수 있는 표면, 내비메시 에 이전트(NavMesh Agent) - 내비메시 위에서 경로를 계산하고 이동하는 캐릭터 또는 컴포넌트, 내비메시 장애물 (NavMesh Obstacle) - 에이전트의 경로를 막는 장애물, 오프매시 링크(Off mesh Link) - 끊어진 내비메시 영역 사이를 잇는 연결 지점
내비메시 굽기(Window > AI > Navigation -> 내비게이션 창에서 Bake 탭 클릭 후 변경값 설정 -> Bake 버튼 클릭)
익명 함수와 람다식
익명 함수 : 미리 정의하지 않고, 인라인(실행 중인 코드 블록 내부)에서 즉석 생성할 수 있는 메서드로 실시간 생성 가능하며, 변수에 저장할 수 있는 값이나 오브젝트로 취급. 생성된 익명 함수는 델리게이트 타입의 변수에 저장 가능. 익명 함수는 미리 정의하지 않고 대부분 일회용으로 실시간 생성해서 사용하기 때문에 스코프 외부에서 따로 지칭할 수 있는 이름을 가지고 있지 않음
람다식 : 람다 표현식(Lanmda Expression)이라고도 하며, 익명 함수를 만드는 데 사용되는 표현으로
(입력) => 내용; 의 형식으로 사용
포스트 프로세싱
포스트 프로세싱 스택 : 포스트 프로세싱은 후처리라고 번역되며, 게임 화면이 최종 출력되기 전에 카메라의 이미지 버퍼에 삽입하는 추가 처리로 영상미를 높일 수 있음. 유니티는 포스트 프로세싱을 쉽게 사용할 수 있는 포스트 프로세싱 스택 패키리를 제공
포워드 렌더링 : 각각의 오브젝트를 그릴 때마다 해당 오브젝트에 영향을 주는 모든 라이팅도 함께 계산하는 전통적인 방식으로 메모리 사용량이 적고 저사양에서도 비교적 잘 동작하지만 연산 속도가 느리며, 오브젝트와 광원이 움직이거나 수가 많아질 수록 연산량이 급증해 사용하기 힘들어짐. 하나의 게임 오브젝트에 대해 최대 4개의 광원만 제대로 개별 연산
디퍼트 셰이딩 : 디퍼드 셰이딩은 라이팅 연산을 미뤄서 실행하는 방식으로 오브젝트의 여러 정보를 종류별로 버퍼에 저장. 유니티의 디퍼드 셰이딩은 개수 제한 없이 광원 표현 가능
'Unity' 카테고리의 다른 글
| 좀비 서바이버 멀티플레이어 (0) | 2021.08.10 |
|---|---|
| 유니런_플레이어 제작 (0) | 2021.08.02 |
| 공간과 움직임 (0) | 2021.07.30 |
| 방향, 크기, 회전 (0) | 2021.07.30 |
| 닷지_게임 매니저와 UI, 최종 완성 (0) | 2021.07.30 |

RECENT COMMENT