# Animation

애니메이션은 게임엔진의 주요 기능중 하나입니다.

godot에선 AnimaionPlayer, AnimationTree

이 두개의 강력한 노드의 조합으로 다양한 애니메이션을 커버할 수 있습니다.

# 단순한 애니메이션 구현

단순한 어떠한 동작을 실행하고싶다면 AnimatedSprite2D노드만으로도 충분한 경우가 많습니다.

노드를 추가하고 해당 노드에 포커스하면 하단에 SpriteFrames 탭이 생기고, 스프라이트 애니메이션을 편집할 수 있습니다.

auto play, loop 등의 기능버튼이 있어서 상황에 따라 사용하기 편리합니다.

# AnimationPlayer

AnimatedSprite2D노드만으로 부족하다면 AnimaionPlayer노드를 활용하세요

다른 노드 대부분의 프로퍼티를 조작할 수 있게 됩니다.

이 과정에서 AnimatedSprite2D노드에서 생성해둔 애니메이션을 AnimaionPlayer에서

활용하고 싶다면 Animated Sprite to Animation Player Converter 플러그인을 설치하고 사용하세요. 클릭 한번으로 AnimationPlayer노드에 애니메이션들을 추가할 수 있습니다.

# AnimationTree

보통 주인공 캐릭터는 idle, move, run, attack, ... 등등 여러 애니메이션을 사용해야하고,

애니메이션마다 우선순위, 애니메이션이 끝나고나서 실행되어야할 또 다른 애니메이션 등등

이렇게 복잡한 애니메이션을 구현할땐 AnimationPlayer, AnimationTree를 활용합니다.

AnimationTree에서 각 액션에 대해 BlendSpace를 생성하고, 관계를 생각하여 연결해줍니다.

각 애니메이션 관계에는 방향이 있고, 그 방향에서 Switch Mode, Condition등을 설정하여

어떤 상황에서 애니메이션이 스위칭될건지, 해당 애니메이션이 어떤 Condition을 가졌을때 동작하는지

이름(id)을 설정해줍니다. 여기에서 설정한 id는 아래스크립트처럼 어떤 상황에서 어떤 애니메이션을 실행해야하는지 결정합니다.

animation_tree["parameters/conditions/idle"] = true
animation_tree["parameters/conditions/walk"] = false
animation_tree["parameters/conditions/attack"] = false

# AnimationTree를 사용했는데 애니메이션이 작동안할때

BlendSpace를 사용했다면 연필모양의 버튼을 클릭해서 Blend Path를 그렸는지 확인해주세요.

BlendSpace2D를 사용했다면 Blend Path가 (일반적으로는) 사각형 모양이 나와야합니다.