03 애니메이션 - jes79/Unity-AI-Glossary-Playground GitHub Wiki

03 애니메이션

Animator의 '파라미터 이름'과 '언제 바뀌는지'를 함께 적으면 코드와 설정이 정확히 맞물립니다.

씬 14개 · 폴더 Assets/00_Scenes/03_Animation

번호 용어 쉽게 말하면 씬에서 보여 주는 것 구현 방식
0301 Animator Controller 애니메이션 상태를 관리하는 그래프 Idle/Run/Jump 컨트롤러를 A/D·Space로 조작, 현재 상태 강조 런타임 데모
0302 State / Transition 상태와 상태 사이 전환 Run→Jump 전환의 Has Exit Time ON/OFF 반응 지연 비교 런타임 데모
0303 Parameter (Float, Bool, Trigger) 코드에서 애니메이션을 바꾸는 스위치 Speed(Float)·IsGrounded(Bool)·Attack(Trigger) 스크립트 제어 런타임 데모
0304 Blend Tree 속도에 따라 걷기→뛰기를 자연스럽게 섞음 Speed로 Idle-Walk-Run 1D Blend Tree vs 딱딱한 전환 비교 런타임 데모
0305 Animation Event 애니메이션 특정 프레임에 함수 실행 공격 클립 12프레임 Animation Event로 데미지 판정 런타임 데모
0306 Animation Layer / Avatar Mask 상체·하체 애니메이션 분리 상체 Avatar Mask 레이어로 뛰면서 상체만 사격 런타임 데모
0307 Root Motion 애니메이션 자체 움직임으로 이동 구르기는 Root Motion, 걷기는 코드 이동 런타임 데모
0308 Humanoid / Retargeting 다른 캐릭터 애니메이션 재사용 본 이름 매핑으로 체형 다른 리그에 리타게팅, Mixamo→Humanoid 절차 설명 설명 + 대체 구현
0309 IK (Inverse Kinematics) 손·발을 목표 위치에 맞춤 계단에서 Raycast + 2본 IK로 발 붙이기, OnAnimatorIK 코드 설명 설명 + 대체 구현
0310 스프라이트 애니메이션 / Sprite Sheet 2D 그림을 프레임으로 넘김 코드로 그린 8프레임 시트를 잘라 걷기 애니메이션 재생 런타임 데모
0311 2D 본 애니메이션 (2D Animation 패키지) 2D 그림에 뼈를 심어 움직임 SpriteRenderer 본 계층 애니메이션, 2D Animation 패키지 절차 설명 설명 + 대체 구현
0312 Timeline 컷신·연출 편집기 코드로 만든 Timeline 보스 등장 컷신(카메라·대사·사운드) 런타임 데모
0313 트윈 (Tween, DOTween) 코드로 위치·크기·색을 부드럽게 변화 0.2초 펀치 스케일 미니 트윈, DOTween 대응 코드 설명 설명 + 대체 구현
0314 히트스톱 (Hit Stop) 타격 순간 아주 잠깐 정지 타격 시 Time.timeScale 0으로 0.05초 히트스톱 런타임 데모

항목별 상세

0301

Animator Controller — 애니메이션 상태를 관리하는 그래프

요청 예문: "Idle, Run, Jump 상태를 가진 Animator Controller 구성을 알려줘."

  • 씬: Assets/00_Scenes/03_Animation/0301_AnimatorController.unity
  • 핵심 스크립트: AnimatorControllerDemo, AnimatorStateDisplay
  • 빌더: Assets/01_Scripts/Editor/Scenes/03_Animation/Build0301_AnimatorController.cs
  • 구현 방식: 런타임 데모
  • 개념: 애니메이션 상태와 전환 조건을 그래프로 묶어 둔 에셋. 코드는 파라미터 값만 바꾸고, 어떤 클립을 언제 재생할지는 그래프가 결정한다. Animator 컴포넌트에 물려 쓴다.
  • 씬에서 보여 주는 것: Idle/Run/Jump 컨트롤러를 A/D·Space로 조작, 현재 상태 강조
  • 확인 포인트: A/D 와 Space 로 움직이며 Idle → Run → Jump 상태가 바뀌는지, 패널에 표시되는 현재 상태 이름이 조작과 맞게 강조되는지 보세요.

0302

State / Transition — 상태와 상태 사이 전환

요청 예문: "Run에서 Jump로 바로 넘어가게 Transition의 Has Exit Time을 끄는 법 알려줘."

  • 씬: Assets/00_Scenes/03_Animation/0302_StateTransition.unity
  • 핵심 스크립트: StateTransitionDemo
  • 빌더: Assets/01_Scripts/Editor/Scenes/03_Animation/Build0302_StateTransition.cs
  • 구현 방식: 런타임 데모
  • 개념: 상태와 상태를 잇는 화살표. 조건(Condition), 전환 시간(Duration), 현재 클립을 끝까지 재생할지(Has Exit Time)를 정한다. Has Exit Time 을 켠 채로 두면 입력이 늦게 반응하는 흔한 원인이 된다.
  • 씬에서 보여 주는 것: Run→Jump 전환의 Has Exit Time ON/OFF 반응 지연 비교
  • 확인 포인트: Run 중에 Space 를 눌러 보세요. Has Exit Time 을 켜면 현재 클립이 끝날 때까지 기다려 점프가 늦게 나가고, 끄면 즉시 전환됩니다. 두 Animator 를 나란히 비교할 수 있습니다.

0303

Parameter (Float, Bool, Trigger) — 코드에서 애니메이션을 바꾸는 스위치

요청 예문: "Speed(Float), IsGrounded(Bool), Attack(Trigger) 파라미터를 스크립트로 제어해줘."

  • 씬: Assets/00_Scenes/03_Animation/0303_AnimatorParameters.unity
  • 핵심 스크립트: AnimatorParameterDemo
  • 빌더: Assets/01_Scripts/Editor/Scenes/03_Animation/Build0303_AnimatorParameters.cs
  • 구현 방식: 런타임 데모
  • 개념: Animator 그래프가 읽는 변수. Float 는 속도처럼 연속값, Bool 은 땅에 닿았는지 같은 상태, Trigger 는 공격처럼 한 번만 발생하는 신호에 쓴다. 코드에서 SetFloat/SetBool/SetTrigger 로 넣는다.
  • 씬에서 보여 주는 것: Speed(Float)·IsGrounded(Bool)·Attack(Trigger) 스크립트 제어
  • 확인 포인트: 이동하면 Speed(Float)가 변하고, 점프하면 IsGrounded(Bool)가 false 가 되며, 공격 키를 누르면 Attack(Trigger)이 한 프레임만 켜졌다 사라지는지 패널에서 보세요.

0304

Blend Tree — 속도에 따라 걷기→뛰기를 자연스럽게 섞음

요청 예문: "Speed 값으로 Idle-Walk-Run을 섞는 1D Blend Tree를 만들어줘."

  • 씬: Assets/00_Scenes/03_Animation/0304_BlendTree.unity
  • 핵심 스크립트: BlendTreeDemo
  • 빌더: Assets/01_Scripts/Editor/Scenes/03_Animation/Build0304_BlendTree.cs
  • 구현 방식: 런타임 데모
  • 개념: 하나의 파라미터 값에 따라 여러 클립을 비율로 섞어 재생하는 노드. 걷기와 뛰기를 속도에 맞춰 자연스럽게 잇거나, 방향별 이동을 2D 로 섞는 데 쓴다.
  • 씬에서 보여 주는 것: Speed로 Idle-Walk-Run 1D Blend Tree vs 딱딱한 전환 비교
  • 확인 포인트: 이동 속도를 천천히 올려 Idle → Walk → Run 이 끊김 없이 섞이는지 보세요. 오른쪽의 일반 Transition 캐릭터는 같은 구간에서 딱딱하게 바뀝니다.

0305

Animation Event — 애니메이션 특정 프레임에 함수 실행

요청 예문: "공격 애니메이션 12프레임에 Animation Event로 데미지 판정을 넣어줘."

  • 씬: Assets/00_Scenes/03_Animation/0305_AnimationEvent.unity
  • 핵심 스크립트: AnimationEventDemo
  • 빌더: Assets/01_Scripts/Editor/Scenes/03_Animation/Build0305_AnimationEvent.cs
  • 구현 방식: 런타임 데모
  • 개념: 애니메이션 클립의 특정 프레임에 함수 호출을 심는 기능. 공격 판정, 발소리, 이펙트 생성을 모션과 정확히 맞출 수 있어 코드에서 시간을 세는 방식보다 정확하다.
  • 씬에서 보여 주는 것: 공격 클립 12프레임 Animation Event로 데미지 판정
  • 확인 포인트: 공격을 해 보세요. 클립 12프레임에 심어 둔 이벤트가 불리는 순간 데미지 판정과 로그가 찍힙니다. 모션보다 이르거나 늦지 않은지 타임라인 표시와 함께 보세요.

0306

Animation Layer / Avatar Mask — 상체·하체 애니메이션 분리

요청 예문: "뛰면서 상체만 총 쏘는 동작이 되게 Avatar Mask 레이어를 만들어줘."

  • 씬: Assets/00_Scenes/03_Animation/0306_AnimationLayerAvatarMask.unity
  • 핵심 스크립트: AvatarMaskDemo
  • 빌더: Assets/01_Scripts/Editor/Scenes/03_Animation/Build0306_AnimationLayerAvatarMask.cs
  • 구현 방식: 런타임 데모
  • 개념: 여러 애니메이션을 층으로 겹쳐 재생하고, Avatar Mask 로 어느 뼈에 적용할지 지정하는 기능. 하체는 달리기, 상체는 사격처럼 부위별로 다른 동작을 동시에 하게 만든다.
  • 씬에서 보여 주는 것: 상체 Avatar Mask 레이어로 뛰면서 상체만 사격
  • 확인 포인트: 달리면서 사격해 보세요. 하체는 달리기 모션을 유지하고 상체만 사격 모션으로 바뀝니다. Mask 를 끄면 전신이 사격 모션으로 덮여 달리기가 사라집니다.

0307

Root Motion — 애니메이션 자체 움직임으로 이동

요청 예문: "구르기 동작에 Root Motion을 쓰고 나머지는 코드로 이동하게 해줘."

  • 씬: Assets/00_Scenes/03_Animation/0307_RootMotion.unity
  • 핵심 스크립트: RootMotionDemo
  • 빌더: Assets/01_Scripts/Editor/Scenes/03_Animation/Build0307_RootMotion.cs
  • 구현 방식: 런타임 데모
  • 개념: 애니메이션 클립에 기록된 이동량을 캐릭터의 실제 이동으로 쓰는 방식. 구르기·공격 전진처럼 모션과 이동이 정확히 맞아야 할 때 자연스럽지만, 코드로 속도를 제어하기는 어려워진다.
  • 씬에서 보여 주는 것: 구르기는 Root Motion, 걷기는 코드 이동
  • 확인 포인트: 구르기(Root Motion)와 걷기(코드 이동)를 번갈아 해 보세요. 구르기는 발이 밀리지 않고 모션 그대로 이동하는데, 코드 이동은 발이 미끄러질 수 있습니다.

0308

Humanoid / Retargeting — 다른 캐릭터 애니메이션 재사용

요청 예문: "Mixamo 애니메이션을 Humanoid로 설정해서 내 캐릭터에 리타게팅해줘."

  • 씬: Assets/00_Scenes/03_Animation/0308_HumanoidRetargeting.unity
  • 핵심 스크립트: BoneRetargeter
  • 빌더: Assets/01_Scripts/Editor/Scenes/03_Animation/Build0308_HumanoidRetargeting.cs
  • 구현 방식: 설명 + 대체 구현
  • 개념: 사람 형태 리그를 Unity 표준 뼈(Humanoid)로 매핑해, 체형이 다른 캐릭터끼리 같은 애니메이션을 돌려 쓰는 기능. Mixamo 등 외부 애니메이션을 내 캐릭터에 붙일 때 쓴다.
  • 씬에서 보여 주는 것: 본 이름 매핑으로 체형 다른 리그에 리타게팅, Mixamo→Humanoid 절차 설명
  • 확인 포인트: 본 이름 매핑으로 체형이 다른 두 리그에 같은 동작이 적용되는지 보세요. 패널에 실제 작업 절차(FBX Rig > Animation Type > Humanoid, Avatar 설정)가 단계별로 적혀 있습니다.

0309

IK (Inverse Kinematics) — 손·발을 목표 위치에 맞춤

요청 예문: "계단에서 발이 바닥에 붙도록 Foot IK를 적용해줘."

  • 씬: Assets/00_Scenes/03_Animation/0309_InverseKinematics.unity
  • 핵심 스크립트: FootIKDemo
  • 빌더: Assets/01_Scripts/Editor/Scenes/03_Animation/Build0309_InverseKinematics.cs
  • 구현 방식: 설명 + 대체 구현
  • 개념: 뼈의 회전을 직접 주는 대신 손·발의 목표 위치를 주고 중간 관절을 거꾸로 계산하는 방식. 계단에서 발 붙이기, 벽 짚기, 무기 양손 잡기 같은 상황 보정에 쓴다.
  • 씬에서 보여 주는 것: 계단에서 Raycast + 2본 IK로 발 붙이기, OnAnimatorIK 코드 설명
  • 확인 포인트: 계단·경사를 걸어 보세요. Raycast 로 찾은 바닥 높이에 발이 붙어 공중에 뜨거나 파묻히지 않습니다. IK 를 끄면 발이 계단을 뚫고 들어갑니다.

0310

스프라이트 애니메이션 / Sprite Sheet — 2D 그림을 프레임으로 넘김

요청 예문: "8프레임 스프라이트 시트를 잘라서 걷기 애니메이션을 만들어줘."

  • 씬: Assets/00_Scenes/03_Animation/0310_SpriteSheetAnimation.unity
  • 핵심 스크립트: SpriteSheetDemo
  • 빌더: Assets/01_Scripts/Editor/Scenes/03_Animation/Build0310_SpriteSheetAnimation.cs
  • 구현 방식: 런타임 데모
  • 개념: 한 장의 이미지에 여러 프레임을 늘어놓고 차례로 보여 주는 2D 애니메이션. Sprite Editor 로 자른 뒤 Animation 클립으로 묶으며, 프레임 수와 재생 속도로 느낌이 결정된다.
  • 씬에서 보여 주는 것: 코드로 그린 8프레임 시트를 잘라 걷기 애니메이션 재생
  • 확인 포인트: 코드로 그린 8프레임 시트가 잘려 걷기 애니메이션으로 재생되는지 보세요. 재생 속도를 바꾸면 같은 그림인데 걷는 속도가 달라집니다.

0311

2D 본 애니메이션 (2D Animation 패키지) — 2D 그림에 뼈를 심어 움직임

요청 예문: "2D Animation 패키지로 캐릭터 팔다리에 본을 넣는 법 알려줘."

  • 씬: Assets/00_Scenes/03_Animation/0311_Bone2DAnimation.unity
  • 핵심 스크립트: Bone2DDemo
  • 빌더: Assets/01_Scripts/Editor/Scenes/03_Animation/Build0311_Bone2DAnimation.cs
  • 구현 방식: 설명 + 대체 구현
  • 개념: 2D 그림에 뼈를 심고 메시를 변형해 움직이는 방식. 프레임을 일일이 그리지 않고 부드러운 동작을 만들 수 있어, 프레임 수가 많은 캐릭터에 유리하다.
  • 씬에서 보여 주는 것: SpriteRenderer 본 계층 애니메이션, 2D Animation 패키지 절차 설명
  • 확인 포인트: SpriteRenderer 본 계층이 부모-자식으로 회전하며 팔다리가 움직이는지 보세요. 패널에 실제 2D Animation 패키지로 뼈를 심는 절차가 적혀 있습니다.

0312

Timeline — 컷신·연출 편집기

요청 예문: "Timeline으로 보스 등장 컷신(카메라 이동+대사+사운드)을 만들어줘."

  • 씬: Assets/00_Scenes/03_Animation/0312_Timeline.unity
  • 핵심 스크립트: TimelineCutsceneDemo
  • 빌더: Assets/01_Scripts/Editor/Scenes/03_Animation/Build0312_Timeline.cs
  • 구현 방식: 런타임 데모
  • 개념: 여러 오브젝트의 애니메이션·카메라·오디오를 시간축에 배치해 연출을 만드는 편집기. 컷신, 보스 등장, 스크립트 이벤트 연출에 쓴다.
  • 씬에서 보여 주는 것: 코드로 만든 Timeline 보스 등장 컷신(카메라·대사·사운드)
  • 확인 포인트: 컷신을 재생해 카메라 이동 · 대사 · 사운드가 시간축 위에서 함께 진행되는지 보세요. 중간에 멈추고 다시 재생해도 순서가 흐트러지지 않습니다.

0313

트윈 (Tween, DOTween) — 코드로 위치·크기·색을 부드럽게 변화

요청 예문: "DOTween으로 버튼을 누르면 0.2초 커졌다 작아지는 펀치 효과를 줘."

  • 씬: Assets/00_Scenes/03_Animation/0313_Tween.unity
  • 핵심 스크립트: MiniTween, TweenDemo
  • 빌더: Assets/01_Scripts/Editor/Scenes/03_Animation/Build0313_Tween.cs
  • 구현 방식: 설명 + 대체 구현
  • 개념: 위치·크기·색 같은 값을 시작값에서 끝값으로 시간에 따라 보간해 주는 기법. Easing 곡선으로 느낌을 바꾸며, UI 연출처럼 애니메이션 클립을 만들기 번거로운 곳에 쓴다.
  • 씬에서 보여 주는 것: 0.2초 펀치 스케일 미니 트윈, DOTween 대응 코드 설명
  • 확인 포인트: 버튼을 눌러 0.2초 펀치 스케일을 보세요. 커졌다 되돌아오는 곡선이 선형이 아니라 탄력 있게 움직입니다. 패널의 DOTween 대응 코드와 비교해 보세요.

0314

히트스톱 (Hit Stop) — 타격 순간 아주 잠깐 정지

요청 예문: "공격이 맞으면 0.05초 Time.timeScale을 0으로 해서 히트스톱을 넣어줘."

  • 씬: Assets/00_Scenes/03_Animation/0314_HitStop.unity
  • 핵심 스크립트: HitStopDemo
  • 빌더: Assets/01_Scripts/Editor/Scenes/03_Animation/Build0314_HitStop.cs
  • 구현 방식: 런타임 데모
  • 개념: 타격이 맞는 순간 아주 짧게(0.03~0.1초) 시간을 멈춰 충격을 강조하는 연출. 타격감을 올리는 가장 값싼 방법이지만 길어지면 조작이 끊기는 느낌이 된다.
  • 씬에서 보여 주는 것: 타격 시 Time.timeScale 0으로 0.05초 히트스톱
  • 확인 포인트: 적을 때려 맞는 순간 화면 전체가 0.05초 정지하는지 보세요. 끄고 때려 보면 같은 모션인데 타격이 가볍게 느껴집니다.