이전 플레이어 스테이트를 따루 두지 않고 boolean으로 행동을 통제했다. 하지만 이렇게 진행하니 boolean타입을 난발하고 여러 문제가 발생하기 시작했다. 이상태에서 또 다른 행동을 추가한다면 큰 사고다..
그렇기에 플레이어에게 현재 상태를 나타내는 변수를 생성해 이 변수로 행동을 통제하기로 하였다.
Player state는 여러 현재 상태를 나타낼 수 있게 열거형(Enum)으로 생성하여 여러가지 State를 나타내었다.
계속 여러 행동을 추가할텐데 이제는 열거형변수에 추가만 하면 플레이어의 상태를 쉽게 나타낼 수 있게 되었다!
하지만 하나의 문제가 생겼다. 공격키를 연타하면 어느순간 플레이어가 멈추는 현상이 발생했다. 이때 구르기로 상황을 탈출할 수는 있었지만 불편하고 오류임이 확실하기에 원인을 알아보았다.
겉보기에는 아무런 문제가 없어 보였다. 공격 애님이 끝나면 state 값을 Idle로 바꾸어주면 다시 움직일 수 있기 때문이다. 하지만 연타를 하면 어느순간 멈춘다. 나는 이 문제의 원인을 Transition Rule에서 찾았다.
기존은 애니메이션 진행이 95퍼가 진행되면 Idle 애니메이션을 실행시키라는 명령문이다. 이렇게 되면 어떤 상황이던 95퍼가 지나면 공격애니메이션이 중단되고 Idle 애니메이션을 실행시킨다. 여기서 문제가 발생한다고 생각했다.
기존 공격 애니메이션이 끊기면 EndAttack 노티파이가 호출되지 않기 때문이다. 공격연타를 하면 한번 끊킬 수 있기에 애니메이션 진행으로 애니메이션을 통제하는 것이 아닌 State가 idle이 되야 Idle 애니메이션을 실행시키게 하였다.
몬스터들 State를 두어 관리해야겠다.
'ToyProject > RedCaped' 카테고리의 다른 글
[언리얼엔진 5] 9. Pet Class (0) | 2023.01.03 |
---|---|
[언리얼엔진 5] 8. Particle and Collision Attack (0) | 2023.01.02 |
[언리얼엔진 5] 6. FloatingDamage and Critical (0) | 2022.12.28 |
[언리얼엔진 5] 5. Player Attack (0) | 2022.12.27 |
[언리얼엔진 5] 4. AI Attack (0) | 2022.12.27 |