처음에는 AnyState에서 int인 어택콤보가 현재 몇이냐에 따라 애니메이션을 실행시키도록 했음
근데 이렇게 하니까 문제인게 OnFire를 실행시킬 때마다 숫자가 빠르게 올라가다보니
사용자는 0.1초만에 3까지 올리는데 애니메이션은 총 1초가 걸린단 말이지?
그래서 애니메이션이 순차적으로 실행되도록 강제하는 서브상태머신을 사용하기로 했어
이게 지금 내가 구성한 베이스레이어와 서브상태머신 Attack임
S를 누르면 OnFire가 Attack을 트리거하고
int인 AttackCombo가 1에서 3까지 올라가
그런 다음 콤보 수치가 몇이냐에 따라 어택을 실행하도록 해놧음
근데 이렇게 해놓으니까 문제인게
S를 누를 때마다 트리거가 되어서 Entry -> Attack1로 가서 이게 또 실행되더라고
즉 SSS이렇게 누르면 Attack1만 3번 반복된다는 거 ㅇㅇ
찾아보니까 애니메이터의 키 프레임에서 특정 시점에 도달하면 이벤트를 발생하도록 해놨길래
이 이벤트를 기준으로 콤보 수신 상태를 열도록 하면 해결될 것 같긴 함
근데 아무리 생각해도 이건 너무 복잡한 것 같은 거야
이렇게 절차지향적인 프로그래밍이 유니티에 맞는 거임?? 아닐 것 같은데
유튜브에 검색해보니까 3~4년 전 공략글로는 어택당 트랜지션 모션을 세트로 짝지어서
3단 공격의 경우 총 6개의 모션을 넣으라고 하는데 요즘에도 이렇게 함?
코드로 상태 머신 관리하고 애니메이션 트리를 단순 플래그로 관리하거나 안쓰면 됨 애니메이션 트리를 써서 구현하면 다 비슷하게 복잡할수밖에 없음 비주얼 관리만 해야 하는 부분에 로직적인게 섞여 들어가게 되니까...
anystate에서 attack1, 2, 3으로 각각 트랜지션 연결해봐.
그냥 더 연구해서 깎아보면 됨
animator.play로 애니메이션 재생을 코드로 제어하셈. 애니메이터로 상태 제어하는 건 좋지 않음. - dc App
결국 다 상태머신을 직접 관리하라는 거네... 그게 낫긴 하겠다 ㅇㅇ...