[Animator]
씬에서 게임 오브젝트에 애니메이션을 지정할 때 사용한다.
[Animation Controller]
상황에 따라 특정 행동을, 어떤 순서로 진행할 것인지 지정한다.

Controller : 해당 Animator을 조종할 AnimationController를 할당한다.

Avatar : 조종될 3D모델
Apply Root Motion : 게임 오브젝트의 위치, 회전을 Animation에서 제어할 수 있도록 허용하는 옵션.
(Animation 제작 시 3D 모션의 자세, 물체 위치, 회전 변경을 위한 제작. 해당 글에서는 플레이어 위치를 스크립트로 만들기에 off)
[InputSystem]

기존에 사용한 InputManager를 대체하는, 유니티의 새로운 입력 시스템.
Update에서 매프레임마다 입력을 확인하며, 입력 발생 시 이벤트를 발생시켜 처리한다.
단점: 매번 키 입력을 해야 하며, 모바일/콘솔 대응이 불편하다.
[2D Vector]
가로/세로를 각각 하나의 축으로 하여, 2차원 입력으로 전달하는 방식
[유한 상태 기계 Finite State Machine, FSM]
유한한 개수의 상태(State)를 기반으로 동작하는 컴퓨터 과학 및 수학적 모델.
한 번에 하나의 상태만 활성화되며, 조건에 따라 현 상태에서 다른 상태로 전환된다.
복잡한 조건문과 플래그 변수를 대체하여, 시스템 동작을 단순하고 명확하게 관리할 때 사용된다.
장: 예측가능성(가독성, 쉬운 디버깅), 안정성(한 번에 하나의 상태만 처리, 꼬일 위험 낮음)
단: 확장 한계(요구사항과 상태가 너무 많으면 전이 조건이 복잡해진다)
좀 더 복잡한 AI를 만들 땐 행동트리(BeHaviour Tree)를 활용할 수도 있다.

Empty : 아무 애니메이션 클립도 재생하지 않는 기본 대기 상태(Idle. 숨쉬기 대기 모션)
Blend Tree : 여러 애니메이션을 부드럽게 혼합(Blending)하여 자연스러운 움직임을 만들어내는 기능. 걷기와 뛰기, 캐릭터의 이동 방향에 따른 애니메이션을 자연스레 전환할 때 사용한다.



애니메이션 클립 우클릭 - Make Transition 후 화살표를 연결할 클립을 선택하여 연결해준다.


화살표 선택 시, 다음과 같은 인스펙터가 나온다.
Has Exit Time : 상태를 이어주는 옵션. 현재 재생 중인 애니를 끝까지 틀고 다음 애니로 넘어갈지(true), 조건이 충족되는 순간 즉시 끊고 넘어갈 지(false) (switch 역할)
Conditions : 애니메이션 상태가 전환되는 기준. 만족 시 애니메이션이 바뀐다.
해당 이미지의 경우, (int)Equals이 0일 시 전환 발생(1일 시 유지)

Parameters : 상태 제어 스크립트(Conditions 등)에 접근하여 값을 할당하여 상태를 제어하거나 영향을 줄 수 있다.
float: 속도, 체력 등 소수점 포함된 값 비교
int: 카운트, 레벨 등 정수 값 비교
bool: true/false 형태로 상태 체크
trigger: 일회성 이벤트/공격 동작에 사용. 실행 시 자동 초기화

해당 이미지는 대기에서 걷기나 뛰기로, 걷기에서 뛰기나 대기로, 뛰기에서 걷기나 대기로 전환하는 클립이다.


이후, Player 부모 오브젝트에 Character Controller 컴포넌트 추가.
Skin Width : 스킨 너비. 콜라이더 걷면에 보이지 않는 미세한 두께(여유 공간)를 만들어 충돌을 매끄럽게 처리하고 떨림 현상을 방지한다.
캐릭터 컨트롤러의 중심점(Center), 반지름(Radius), 높이(Height)도 3D 크기에 맞게 설정해준다.
[함께 보면 좋은 내용
[InputAction]
Input System 패키지 사용.
구조적이고 유연하게 처리하는 구성요소. 하나의 입력 동작을 표현하는 객체. 행동에 집중한다.
(Action Map, Action, Blinding, Type, Control Type...)
할당된 Input Actions에 따라 메서드가 연결된다.
[ .ReadValue<T>() ]
InputAction에서 사용되는 메서드. 입력 값 추출. (<Vector2>, <float> 등)
[RotateTowards]
자연스럽고 부드러운 회전을 구현할 때 사용하는 메서드.
목적지를 향해 일정 속도로 각도를 좁혀가며 회전하는 데 사용한다.
- Quaternion.RotateTowards (오브젝트 회전)
: 오브젝트가 자신의 방향(기존 회전값)에서 목표 방향으로 지정 속도(각도)만큼 회전
Quaternion.RotateTowards(현 회전값(from), 목표 회전값(to), 최대 회전 각도)
- Vector3.RotateTowards (방향 벡터 회전)
: 오브젝트 자체가 아닌, 방향을 나타내는 Vector3 값 자체를 목표 방향으로 서서히 회전
Vector3.RotateTowards(현 방향(current), 목표 방향(target), 최대 반지름, 최대 거리 변화율)
[SetInteager]
애니메이터 컴포넌트의 int 파라미터 값을 변경, 애니메이션 상태 전환 시 사용하는 함수
animator.SetInteager("파라미터명", 값);
[OnEnable()]
컴포넌트가 활성화 될 때마다 호출되는 생명주기 메서드. 상태 변경 시 필요한 초기화 작업 수행.
Awake와 Start는 최초 1회, OnEnable은 Game object각 active 될 때마다 실행.
순서는 Awake - OnEnable - Start
[OnDisable()]
게임 오브젝트가 비활성화(중단)될 때 호출되는 생명주기 메서드.
활성화(OnEnable)와 비활성화(OnDisable)를 반복할 때마다 매번 호출된다.
주로 이벤트 구독 해제, 리소스 정리, 상태 저장 등에 사용된다.(메모리 누수, 오류 방지, 안전한 중단 등)
[OnAnimatorMove()]
애니메이션 움직임(루트 모션 Root Motion)을 스크립트에서 직접 제어 할 수 있게 하는 생명주기 메서드.
Animator의 Root Motion 옵션 체크 시, 애니메이션 시스템이 트랜스폼을 제어한다.
하지만 해당 메서드 사용 시, 애니메이션 시스템이 제어하지 않고 이동 거리값을 받아 직접 이동 기능을 구현할 수 있다.
미끄러짐 방지, 물리 충돌 처리 등에 사용된다.
Root Motion을 통해 애니메이션이 이동한 거리는 deltaPosition으로 얻을 수 있다.
[Physics.gravity]
씬 내 모든 Rigidbody에 작용하는 전역 중력 가속도 값.
[squrMagnitude]
벡터 길이(Magnitude)를 제곱한 값을 반환하는 프로퍼티.
크기를 구할 땐 Magnitude를 사용하나, 제곱값이 필요할 땐 sqrMagnitude를 사용한다.
제곱근(루트)계산은 cpu 연산 비용이 많이 들기에, 성능 최적화 시 사용된다.
[UnityEvent <>]
using UnityEngine.Events;
유니티에서 제공하는 내장 이벤트 시스템. 유니터 에디터 인스펙터 창에서 드래그 앤 드롭을 통해 이벤트를 쉽게 연결하고 관리할 수 있게 한다.
'개발일지 > Unity' 카테고리의 다른 글
| [Unity] Find, Coroutine (0) | 2026.05.28 |
|---|---|
| [Unity]Ray복습, UI, OverLap, Check (0) | 2026.05.27 |
| [Unity] Prefabs, RayCast (0) | 2026.05.26 |
| [Unity]Rigidbody, Collider (0) | 2026.05.26 |
| [Unity]이동, 회전 (0) | 2026.05.26 |