새로 생성한 스크립트
- Player : 오브젝트 움직임 및 애니메이션 조작
게임엔진
- 렌더링 엔진
- 물리 엔진
- PhysX : rigidBody가 사용하는 엔진
- 2D : Box 2D
- 사운드 엔진
- FMod
- 나무를 위한 엔진
- Speed Tree
리지드 바디
- Rigidbody : GameObject가 물리 제어로 동작하게 한다.
- 힘을 받아 오브젝트가 사실적으로 움직이도록 한다.
- 리지드바디가 포함된 모든 게임 오브젝트는 중력의 영향을 받을 수 있고, 스크립팅을 통해 가해진 힘으로 움직이거나 NVIDIA PhysX 물리 엔진을 통해 다른 오브젝트와 상호 작용할 수 있다.
- Mass : 정의되어 있는 ‘질량’ (들어가는 값은 질량에 곱하는 값이다.)
- Drag : 마찰력
- Angular Drag : 회전 마찰력
- Use Gravity : 중력 사용 여부
- Constraints → Freeze Rotation : 회전을 못하게 막는기능 (오브젝트가 넘어지지 않는다.)

콜라이더
- Collider : 물리적 충돌을 위해 게임 오브젝트의 모양을 정의한다.
- 게임 오브젝트와 완전히 똑같을 필요는 없고, 메시의 대략적인 근사치로도 효율적일 때가 많으며, 게임플레이에서 구별하기 어렵다.
- Is Trigger : 이 옵션을 활성화하면 이 콜라이더는 이벤트를 트리거하는 데 사용되고 물리 엔진의 적용을 받지 않는다.
- Center : 오브젝트의 로컬 공간에서 콜라이더의 중심점을 표시한다.
- Radius : 콜라이더의 로컬 너비 반지름을 의미한다.
- Height : 콜라이더의 전체 높이를 의미한다.
- 구 : 가장 빠른 계산이 가능한 콜라이더
- 캡슐 : 두번째로 계산이 빠른 콜라이더
- 박스 : 세번째로 계산이 빠른 콜라이더
- OBB (Oriented Bounding Box) : 방향성이 있는 경계 상자를 뜻한다.
- 축과 정렬되지 않는 경계 축이다.
- AABB를 회전시켰을 때, 발생한다.
- AABB (Axis - Aligned Bounding Box) : 축 방향으로 정렬된 경계 상자 라고 한다.
- 즉, 모든 AABB들은 같은 방향으로 되어있다. (축과 정렬된 경계 축)
- 사각 Box 영역이 좌표축에 평행하다.
- AABB를 적용할 오브젝트의 최솟점 / 최댓점을 구해 정의가 가능하다.
- OBB (Oriented Bounding Box) : 방향성이 있는 경계 상자를 뜻한다.

Input Manager (옛날 방식, 이론추가)
- 프로젝트에 대한 입력 축 및 축과 관련된 행동을 정의할 수 있다.
- 키 (Key) : W 키, Shift 키, 스페이스바 등과 같은 물리적 키보드의 모든 키를 의미한다.
- 버튼 (Button) : 리모콘의 X 버튼처럼 물리적 컨트롤러(예: 게임패드)에 있는 버튼을 가리킨다.
- 가상 축 : 버튼, 키 등과 같은 컨트롤에 매핑되는 이 축은 사용자가 컨트롤을 활성화하면 [–1..1] 범위의 값을 수신한다. (스크립트에서 사용할 수 있다)
float x = Input.GetAxis("Horizontal"); float z = Input.GetAxis("Vertical"); - Gravity : 입력(스틱)이 중력에서 1로 돌아오는 시간 (값 곱하기)
- Sensitibity : 속도가 1에 도달하는 시간 (값 곱하기)
- 위의 두 속성을 이용하여 애니메이션이 실행되고 다시 되돌아가는 시간을 단축시켜 동작의 부자연스러움을 줄여준다.
- 오브젝트 이동에 연습하기 좋은 기능이다.
- 지금은 InputSystem이 새로 나와 이것을 사용한다.

OnGUI()
- 간단한 버튼이나 텍스트를 화면에 띄워 데이터를 받아 어떤 값인지 확인 할 수 있다.
- OnGUI() 함수는 이를 포함하는 스크립트가 활성화되면 Update() 함수와 마찬가지로 프레임마다 호출한다.
- GUI 컨트롤을 명시적으로 생성하거나 제거할 필요는 없다.
- new Rect : x와 y에 지정한 넓이와 높이로 사각형을 정의하는 함수
private void OnGUI()
{
GUI.color = Color.red;
GUI.Label(new Rect(10, 10, 200, 20), direction.x.ToString());
GUI.Label(new Rect(10, 30, 200, 20), direction.y.ToString());
GUI.Label(new Rect(10, 50, 500, 20), velocity.ToString());
GUI.Label(new Rect(10, 70, 500, 20), velocity.magnitude.ToString());
}
OnGUI() 결과
이벤트 함수 실행 순서
- 첫 번째 씬 로드 : 씬에 추가된 모든 오브젝트에 대해 Start, Update 등 이전에 호출된 모든 스크립트를 위한 Awake 및 OnEnable 함수가 호출된다. (게임플레이 도중 오브젝트를 인스턴스화될 때는 실행되지 않는다.)
- Awake : 이 함수는 항상 Start 함수 전에 호출되며 프리팹이 인스턴스화 된 직후에 호출된다.
- 게임 오브젝트가 시작하는 동안 비활성 상태인 경우 Awake 함수는 활성화될 때까지 호출되지 않는다.
- 값의 초기화를 실행할 때 사용하는 함수
private void Awake() { rigidbody = GetComponent<Rigidbody>(); animator = GetComponent<Animator>(); } - OnEnable : 오브젝트 활성화 직후 이 함수를 호출한다.
- 레벨이 로드되거나 스크립트 컴포넌트를 포함한 게임 오브젝트가 인스턴스화될 때와 같이 MonoBehaviour를 생성할 때 작동한다. (오브젝트 활성 비활성 체크 버튼)
- Awake : 이 함수는 항상 Start 함수 전에 호출되며 프리팹이 인스턴스화 된 직후에 호출된다.
- 첫 번째 프레임 업데이트 전
- Start : 스크립트 인스턴스가 활성화된 경우에만 첫 번째 프레임 업데이트 전에 호출된다.
- 업데이트 순서
- FixedUpdate : FixedUpdate 는 종종 Update 보다 더 자주 호출된다.
- 프레임 속도가 낮은 경우 프레임당 여러 번 호출될 수 있으며 프레임 속도가 높은 경우 프레임 사이에 호출되지 않을 수 있다.
- 모든 물리 계산 및 업데이트는 FixedUpdate 후 즉시 발생한다.
- 1초에 몇번이라는 실행 횟수를 보장하기에 물리적 함수를 사용할때 사용한다.
- FixedUpdate 의 움직임 계산을 적용할 때 Time.deltaTime 만큼 값을 곱할 필요가 없다. ⇒ 프레임 속도와 관계없이 신뢰할 수있는 타이머에서 호출되기 때문이다.
- Update : Update 는 프레임당 한 번 호출된다.
- 프레임 업데이트를 위한 주요 작업 함수다.
- Update 에서 수행된 모든 계산은 LateUpdate 가 시작할 때 완료된다.
- LastUpdate : LateUpdate 는 Update 가 끝난 후 프레임당 한 번 호출된다.
- LateUpdate 는 일반적으로 다음의 3인칭 카메라에 사용한다.
- 캐릭터를 움직이고 Update 로 방향을 바꾸게 하는 경우 LateUpdate 에서 모든 카메라 움직임과 로테이션 계산을 수행할 수 있다.
- 이렇게 하면 카메라가 포지션을 추적하기 전에 캐릭터가 완전히 움직였는지 확인할 수 있다.
- LateUpdate 는 일반적으로 다음의 3인칭 카메라에 사용한다.
- FixedUpdate : FixedUpdate 는 종종 Update 보다 더 자주 호출된다.
- 렌더링
- OnGUI : GUI 이벤트에 따라 프레임당 여러 번 호출된다.
- 레이아웃 및 리페인트 이벤트는 우선 처리되며 각 입력 이벤트에 대해 레이아웃 및 키보드/마우스 이벤트가 다음으로 처리된다.
- OnDrawGizmos : 시각화 목적으로 씬 뷰에 기즈모를 그릴 때 사용된다.
- OnGUI : GUI 이벤트에 따라 프레임당 여러 번 호출된다.
- 코루틴 : 일반적인 코루틴 업데이트는 Update 함수가 반환된 후 실행된다. 코루틴은 주어진 YieldInstruction이 완료될 때까지 실행을 중단할 수 있는 함수다.
- yield : 코루틴은 모든 Update 함수가 다음 프레임에 호출된 후 계속된다.
- yield StartCoroutine : 코루틴을 연결하고 MyFunc 코루틴이 먼저 완료되기를 기다린다.
- 오브젝트를 파괴할 때
- OnDestroy : 오브젝트 존재의 마지막 프레임에 대해 모든 프레임 업데이트를 마친 후 이 함수가 호출된다.
- 오브젝트는 Object.Destroy 또는 씬 종료에 대한 응답으로 파괴될 수 있다.
- OnDestroy : 오브젝트 존재의 마지막 프레임에 대해 모든 프레임 업데이트를 마친 후 이 함수가 호출된다.
- 종료할 때
- OnDisable : 동작이 비활성화되거나 비활성 상태일 때 이 함수가 호출된다.
Project setting - Time
- Fixed Timestep : 프레임 속도와 독립적인 간격으로, 물리 연산 및 FixedUpdate() 이벤트가 수행되는 시기를 결정한다.
- Time Scale : 시간이 흐르는 속도다.
- 이 값을 변경하여 슬로 모션(bullet-time) 효과를 시뮬레이션할 수 있다.
- 값을 1로 설정하면 실시간, 값을 .5로 설정하면 절반 속도로, 2로 설정하면 2배 속도로 흐른다.
- ui 선택 화면을 들어가거나, 액션 게임에서 메뉴나 무기선택시 게임 전체가 느려지게 하는 효과를 줄 수 있다.
X Y Z - 피치 야 롤 (축 회전)
- 각 축을 수평으로 놓고 오른쪽에서 찌른다음 돌린다고 생각하면 편하다.
- x (Roll) : 오른쪽을 기준으로 오른쪽에서 왼쪽으로 찌른 후 돌린다.
- 정면 방향(+) / 뒤통수 방향(-)로 회전한다. (끄덕끄덕)
- z (Pitch) : 정면을 기준으로 정면에서 뒤통수로 찌른 후 돌린다.
- 좌측 방향(+) / 우측 방향(-)으로 회전한다. (갸웃갸웃)
- Y (Yaw) : 상단을 기준으로 상단에서 하단으로 찌른 후 돌린다.
- 좌로 굴러(+) / 우로 굴러(-)로 회전한다. (도리도리)
Animator
- Conditions : 전환은 하나의 조건, 여러 조건 또는 조건이 없을 수도 있다.
- 전환에 조건이 없다면 Unity 에디터는 Exit Time 만을 고려하며, 종료 시간이 되면 전환이 발생한다.
- Greater : 오른쪽 값보다 크면 상태를 변화해라
- less : 오른쪽 값보다 작으면 상태를 변화해
Vector3.magnitude
- magnitude 이란? : 인자로 들어온 벡터의 길이를 반환한다.
- 주로 두 벡터간의 거리를 구할 때 사용한다.
- 벡터의 길이는 루트 x제곱 + y제곱 + z제곱의 제곱근이다.
- magnitude는 정확한 거리를 알고 싶을 떄 사용된다.
- sqrmagnitude와 다른점? : sqrMagnitude는 인자로 들어온 벡터의 길이를 제곱해서 반환해준다.
- 주로 물체가 이동하는 속도를 계산할 때 사용된다.
- 루트 연산을 하지 않아 연산속도가 빠르다는 장점이 있지만 정확한 거리를 측정하지 않는다.
애니메이션 레이어
- 서로 다른 신체 부위의 복잡한 상태 머신을 관리하기 위해 Animation Layers를 사용한다.
- 예를 들면, 하체 레이어는 뛰거나 걷는 것을 관리하고, 상체 레이어는 오브젝트를 던지거나 사격하는 것을 관리한다.
- 각 레이어 별로 마스크와 블렌딩 타입을 지정할 수 있다.
- 마스크 (Mask) : 애니메이션을 적용할 신체 부위를 지정한다. (에셋 폴더에 Mask 파일을 생성해야한다.)
- 총을 겨누는 모션을 하면서 걷거나 뛰게하기 위해 총을 겨누는 애니메이션이 있는 레이어에 마스크를 사용하여 애니메이션이 적용되는 부위를 한한다.
- 블렌딩 (Blending) : 애니메이션이 적용되는 방식을 지정한다.
- Override : 선택하면 새 레이어의 애니메이션을 사용하여 아래 레이어의 애니메이션을 대체한다.
- Additive : 선택하면 아래 레이어의 애니메이션 위에 새 레이어의 애니메이션을 추가한다.
- 마스크 (Mask) : 애니메이션을 적용할 신체 부위를 지정한다. (에셋 폴더에 Mask 파일을 생성해야한다.)
아바타 마스크
- 마스크 : 레이어로 나눈 애니메이션이 적용될 오브젝트의 위치를 지정하는 인스펙터 창이다.
- 부위별로 클릭하면 빨간색으로 변하는데 이 부분은 애니메이션 적용이 안된다.
- 트랜스폼으로 마스킹을 한다면, 아바타의 뼈대를 이루는 계층 구조가 표시되고 각 뼈대의 체크박스를 선택 또는 해제하여 계층 구조의 각 부분을 마스크로 사용할 수 있다.
- 장점
- 불필요한 애니메이션 데이터를 제외하고 빌드하므로 파일 크기와 메모리 사용량이 줄어들게된다.
- 런타임 시점에 블렌드되는 애니메이션 데이터의 양이 줄어들기 때문에 처리 속도도 빨라진다.

Hip
- 오브젝트에 나눠진 움직임을 구현하기 위한 본(뼈대)를 시각적인 리스트로 확인할 수 있다.
- 모든 캐릭터 모델링의 중심은 Hip이며, Hip부터 뼈대가 이어진다.
- 사람으로 치면 골반 이라고 생각하면 될것같다.
Keyframe 애니메이션
- 키 프레임 애니메이션이란 사용하면 두 개 이상의 대상 값을 사용하여 애니메이션 효과를 주고 애니메이션의 보간 방법을 제어할 수 있는 방법을 의미합니다.
- 키 프레임 애니메이션 특징
- 전체 애니메이션중에서 중요한 몇개의 프레임에 애니메이션 키 값을 등록하고, 나머지 들은 자동으로 생성합니다.
- 애니메이션의 보간 방법은 한 값에서 다음 값으로 전환되는 방식을 정의합니다.
- 보간에는 불연속, 선형 및 스플라인의 세 가지 유형이 있습니다.
- 프레임 : 애니메이션에서 출력될 한 장면, 한 장면을 말합니다.
- 예를 들면 불투명도를 100%로 놓은 키와 10초에서 불투명도를 0%로 놓은 키가 있다면 10초로 이르는 사이 서서히 투명해지는 애니메이션을 만들 수 있고, 1초에서 볼륨을 0%로 해놓은 키와 10초에서 100%로 놓은 키가 있으면 볼륨이 서서히 커지는 효과의 애니메이션을 만들 수 있는 것입니다.
- 보간 방법
- 선형 보간 : 애니메이션이 세그먼트 기간에 일정한 속도로 진행됩니다.
- 불연속 보간 : 애니메이션 함수가 보간 없이 한 값에서 다음 값으로 이동합니다.
- 스플라인 보간 : 스플라인 보간은 보다 실제적인 타이밍 효과를 얻기 위해 사용할 수 있습니다.
- 스플라인 키 프레임을 사용하면 스플라인 보간을 사용하여 애니메이션 효과를 줄 수 있습니다.
- 정리
- 키 프레임을 만드는 것 = 변화 전과 변화 후의 장면을 만드는 것입니다.
- 간단하게, 작곡가가 오선지에 음표를 넣듯이 타임라인에 ‘키프레임’을 넣어주면 되는 것입니다.
Transform - 상대간격, 절대간격 (이론추가)
- 절대 좌표 : 기준점을 중심으로 현재 위치를 표현하는 것이다.
- 상대 좌표 (로컬 좌표) : 오브젝트를 기점으로 현재 위치를 나타내는 것이다.
- 간단하게, 절대 간격이란 절대 좌표를 기준으로 두 오브젝트의 좌표를 나타내는 것이다.
- 예를 들어, (0, 0, 0)을 기준으로 A는 10이고, B는 15라면 A의 간격은 10, B의 간격은 15다.
- 상대 간격은 상대 좌표를 기준으로 두 오브젝트의 위치를 기준으로 나타내는 것이다.
- A는 10, B는 15라면 두 오브젝트 사이의 거리인 5가 상대 간격이다.
- T(translate : 이동)R(rotation : 회전)S(Scale : 규모)로 표현한다.
- 4 * 4 행렬로 Transform Matrix를 표현한다. ⇒ 각 뼈대의 상대적 간격이 4*4 행렬로 저장되어 있다. ⇒ FK(Foward Kinematics)라고 부른다.?
- 1 000 ⇒ 왼쪽 1000 : x방향
- 0100 ⇒ 왼쪽 010 : y방향
- 0010 ⇒ 왼쪽 001 : z방향
- 0001 ⇒ 왼쪽 000 : x y z 방향
FK(Foward Kinematics)
- 컴퓨터 그래픽과 애니메이션에서 관절의 회전을 기반으로 캐릭터의 손, 발 또는 기타 관절 부분의 위치와 방향을 계산하는 데 사용되는 기법이다.
- Foward Kinematics는 트랜스폼 클래스를 사용하여 구현된다.
- 스켈레톤 계층구조: 캐릭터의 스켈레톤은 뼈대 또는 조인트의 계층 구조로 구성되며, 각 뼈대는 캐릭터 신체의 관절을 나타낸다.
- 관절 회전: 스켈레톤 계층구조의 각 뼈에는 로컬 좌표계로 정의된 고유한 회전이 있다.
- 전파: 스켈레톤의 루트에서 시작하여 회전 값은 계층 구조를 따라 하위 본으로 전파된다.
- 좌표 변환: 회전이 스켈레톤 계층구조를 통해 전파될 때 각 뼈의 로컬 좌표계는 부모의 회전에 따라 변환된다.
- 엔드 이펙터 위치 및 오리엔테이션: 손이나 발과 같은 엔드 이펙터는 스켈레톤 체인의 최종 본이다.
- 즉, 포워드 키네마틱을 사용하면 조인트의 회전을 제어하고 그 결과 엔드 이펙터의 위치와 방향을 관찰하여 캐릭터에 애니메이션을 적용할 수 있다.
- 장점
- 사용하기 쉽다: FK는 비교적 간단한 개념으로 이해하고 구현하기 쉽다.
- 효율적이다: FK 계산은 비교적 빠르기 때문에 비디오 게임과 같은 실시간 애플리케이션에 이상적이다.
- 정확하다: FK 계산은 일반적으로 매우 정확하므로 사실적인 애니메이션을 제작하는 데 중요하다.
- 단점
- 유연하지 않을 수 있다 : FK는 유연성이 떨어지기 때문에 FK만으로는 복잡한 애니메이션을 제작하기 어려울 수 있다.
- 비현실적일 수 있다: FK는 중력이나 마찰과 같은 요소를 고려하지 않는다는 점에서 비현실적일 수 있다.
Inverse Kinematics
- 공간에서 선택된 포지션에 따라서는 역으로 작업하여 적합한 조인트 방향을 찾아 해당 포지션에 조인트 끝점이 오도록 하는 방법을 의미한다.
- 즉, 선택한 포인트의 오브젝트를 캐릭터가 건드리게 하거나, 울퉁불퉁한 표면 위에 캐릭터의 두 발이 자연스럽게 밀착해있도록 하려는 경우에 유용하다.
- 어떤 사물에 신체를 맞출 때 사용한다.
- 계단 턱 위에 한 발을 올려둘때의 모션 (지형과 오브젝트의 경사 접착면)
- 확 당길때 같이 무기 사용시
- 벽 기어올라가거나 타고 올라가는 파쿠르 동작
- 어떤 사물을 사용할떄 사물의 동작 방식의 자연스러움
- 방법
- 애니메이터 컨트롤러를 만든다.
- 애니메이터 창의 레이어 섹션에서 레이어의 톱니바퀴 모양의 설정 아이콘을 클릭하고, 이 때 나타나는 메뉴에서 IK 패스 체크박스를 선택한다.
- 실제로 IK를 처리할 스크립트에 연결한다.
- 이 스크립트는 캐릭터의 상세한 행동에 대해 IK 타겟을 설정하고, 실제 원하는 행동이 맞는지 확인되도록 설정한다.
애니메이션 트위닝
- 애니메이션 트위닝은 두 키 프레임 사이의 중간 상태를 자동으로 생성하여 부드러운 애니메이션 효과를 만드는 기법이다.
- 애니메이션이 2개 이상 동시에 플레이할때 그 애니메이션을 섞는 기능을 의미한다.
- 예를 들어, 한 포즈에서 다른 포즈로 이동할 때, 단순히 두 상태 사이를 직접 전환하는 것이 아니라, 중간 단계의 포즈를 계산하여 자연스러운 움직임을 생성한다.
- 2개 이상 애니메이션이 조건이 겹쳐서 동시에 실행된다면, 서서히 바뀌다가 새 애니메이션이 실행되는 조건에 만난다면 이전 애니메이션은 정지하고 새 애니메이션이 실행된다.

선형 보간 (Linear Interpolation)
- 두 점 a, b 사이의 값(c)를 구하기 위해 a-b 두 점을 연결한 직선을 만들어 사이 값을 계산하는 방법이다.
- Lerp라고도 부른다.
- 유니티에서 Lerp는 선형 보간을 사용하여 부드러운 움직임을 표현하기 위해 Update()에서 넣어 사용하거나, 두 image를 blend 해서 하나의 material로 만들 때 주로 사용한다.
- t값에 따라 값이 일정하게 올라가는 식
- a, b, 둘 사이의 거리 * Time.deltaTime이 있을때 a의 위치가 b의 방향으로 둘 사이의 거리 * Time.deltaTime만큼 이동하게 된다.
애니메이션과 클립의 관계
- 외부 소스에서 Unity로 애니메이션을 임포트할 수 있으며, 에디터에서 애니메이션 창을 사용하여 애니메이션 클립을 처음부터 생성할 수도 있다.
- 애니메이션 파일 한 동작 한 동작을 ‘클립’이라고 부른다.
- Unity의 애니메이션 창에서 애니메이션 클립을 만들거나 편집할 수 있다.
- 게임 오브젝트의 포지션, 회전, 스케일
- 컴포넌트 프로퍼티(머티리얼 컬러, 조명 강도, 사운드 볼륨 등)
- 작성한 스크립트에 포함된 프로퍼티(float, int, Vector, boolean 변수 등)
- 작성한 스크립트의 함수 호출 시점
- 애니메이션 파일을 쓸 때, 이 파일명을 다 쓰는게 아니라 클립 명을 쓴다.
- 예를 들어, Kachujin G Rosales@Fast Run이 있을때 애니메이션 이름은 저 파일명이 아니라 @뒤에 Fast Run이 쓰인다.

애니메이션 블랜딩
- 두 가지 이상의 모션을 섞을때 사용하는 작업이다. (트랜지션과 구별 해야한다.)
- 둘 다 자연스러운 애니메이션을 만들기 위해 사용되나, 각각 다른 종류의 상황에 사용된다는 차이가 있다.
- Transitions : 일정 시간 안에 어떤 애니메이션 스테이트에서 다른 애니메이션 스테이트로 매끄럽게 전환하는 데 사용된다.
- 트랜지션은 애니메이션 상태 머신의 일부로서 지정된다.
- 어떤 모션에서 전혀 다른 모션으로 트랜지션되는 경우도 트랜지션이 빠르게 일어난다면 보통 문제가 없다.
- Blend Trees : 여러 개의 애니메이션을 블렌드하고, 각 애니메이션의 일부가 각각 다른 비중으로 합쳐져 매끄럽게 블렌딩되도록 하기 위해 사용한다.
- 각각의 모션이 최종 효과에 어느 정도 영향을 주도록 할 것인지는 블렌딩 파라미터 를 사용하여 제어하는데, 이 파라미터는 애니메이터 컨트롤러에 관련된 수치인 애니메이션 파라미터 중에서 하나다.
- 모션을 자연스럽게 블렌드하기 위해서는 성질과 타이밍이 유사한 모션끼리 블렌드되어야한다. (ex. 기본상태 → 걷기 → 달리기)
- 블렌드 트리는 애니메이션 상태 머신의 특별한 스테이트 타입이다.
- 애니메이션 컨트롤러 우클릭 → Create State → new Blend Tree 클릭 → 이름변경(UnAramed) 후 더블클릭 → Blend Tree에 우클릭 후 Add motion 클릭 → Automate Thresholds 체크해제 → 여러개 넣을 애니메이션을 Motion에 넣고 Thresh에 상태가 변할때의 값을 넣는다.
- 레이어의 기본 상태는 같아야하니 우클릭 → Create State → Empty 클릭 → 이름을 Base Layer의 기본상태와 같은 이름으로 한다. → 여기에서 다른 동작과 연결