캐릭터 애니메이션을 보다 효율적이고 일관성 있게 관리하기 위해 사용되는 ICharacterAnimationController
인터페이스에 대해 알아보겠습니다.
이 인터페이스는 단순히 애니메이션을 재생하는 것을 넘어서, 게임 전반의 애니메이션 시스템을 모듈화하고 추상화하는 역할을 수행합니다.
📚 역할과 위치
ICharacterAnimationController
는 클래스가 아니라 **인터페이스(interface)**입니다.
즉, 구체적인 동작은 포함하고 있지 않으며, 어떤 메서드들을 구현해야 하는지 정의만 해놓은 일종의 청사진이라고 생각하시면 됩니다.
실제로는 Spine을 사용하는 CharacterAnimationControllerSpine
또는 2D Sprite를 사용하는 CharacterAnimationControllerSprite
클래스가 이 인터페이스를 구현하게 됩니다.
이렇게 구성하면, 어떤 애니메이션 시스템을 사용하든 상관없이 캐릭터 코드에서는 인터페이스만 의존하면 되기 때문에 유지보수성과 확장성이 매우 높아지게 됩니다.
🔧 주요 메서드
이 인터페이스에는 다음과 같은 메서드들이 정의되어 있습니다:
PlayWaitAnimation()
→ 대기 상태 애니메이션을 실행합니다.
PlayRunAnimation()
→ 이동 상태 애니메이션을 실행합니다.
PlayAttackAnimation()
→ 공격 애니메이션을 실행합니다.
PlayDeadAnimation()
→ 사망 애니메이션을 실행합니다.
FadeEffect(float duration, bool fadeIn)
→ 캐릭터가 서서히 등장하거나 사라지는 효과를 코루틴으로 처리합니다.
UpdateTimeScaleMove(float value)
→ 이동 애니메이션의 시간 배율을 조정합니다.
GetCharacterSize()
→ 캐릭터의 현재 애니메이션 크기(width, height)를 반환합니다.
ChangeCharacterImageInSlot(List<StruckChangeSlotImage>)
→ 특정 부위의 외형을 변경합니다 (예: 장비 착용 시).