주녘공부일지

[더 챌린저스] 캐릭터 애니메이션 제어 본문

GameEngine/Unity - Project

[더 챌린저스] 캐릭터 애니메이션 제어

주녘 2023. 7. 31. 19:36
728x90

1. 애니메이터 컨트롤러

- 복잡한 구조도를 가능한 편하게 확인하고 수정할 수 있도록 특정 모션들은 서브 머신으로 묶어서 관리

- bool 변수와 Trigger 변수로 두 번 이상 체크를 함으로써 안정성 향상

  ex) isHit : 피격상태 / HitTrigger : 피격 1회

 

캐릭터 애니메이터의 베이스 레이어

2. 애니메이터 오버라이드 컨트롤러

- 매우 복잡한 캐릭터의 애니메이터 컨트롤러를 재사용하기 위해 사용

- 원본 애니메이터 컨트롤러와 동일한 로직을 사용하지만 원본 대신 새롭게 할당된 애니메이션을 재생

- 애니메이션 클립 이벤트와 스테이트 머신 비헤이비어(후술)를 통해 해당 모션에 대한 기능을 함

 

애니메이터 오버라이드 컨트롤러 - Wizard

3. 스테이트 머신 비헤이비어 활용

유니티에서 제공해주는 특별 스크립트 클래스로 스크립트를 상태 머신에 연결 가능

- 모션의 상태 변경을 감지하기 위해 로직을 따로 작성할 필요 없이 해당 모션에서 수행할 특정 로직을 구현

public class Sample : StateMachineBehaviour
{
    public override void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
    {
        // 애니메이션 실행 시 첫 프레임에 한번 호출
    }
    public override void OnStateUpdate(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
    {
        // 처음과 마지막 프레임을 제외한 각 프레임 단위로 호출
    }
    public override void OnStateExit(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
    {
        // 해당 애니메이션 스테이트를 나가기 직전 (마지막 프레임)에 한번 호출
    }
    public override void OnStateMove(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
    {
        // MonoBehaviour.OnAnimatorMove 직후에 실행
    }
    public override void OnStateIK(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
    {
        // MonoBehaviour.OnAnimatorIK 직후에 실행
    }
}

애니메이션 스테이트 관리 고찰 - https://godgjwnsgur7.tistory.com/61

 

[더 챌린저스] 캐릭터 애니메이터 스테이트 관리 고찰

캐릭터 애니메이터 스테이트 관리 고찰 복잡한 구조도를 가능한 편하게 확인하고 수정할 수 있도록 특정 모션들은 서브 머신으로 묶어서 관리 - 특히 Any State로 사용할 필요가 있는 Dash, Die, Skill(

godgjwnsgur7.tistory.com

 

728x90