본문 바로가기

Unreal/Udemy 강의

Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 6-51

복잡한 스테이트 머신 

다시 EventGraph로 돌아가서 is Falling 함수를 통해 is Airborne의 값을 할당해주자.

이 상태에서 컴파일하고 플레이해 보면 바로 점프시 애니메이션이 바뀌는 것을 볼 수 있다.

 

완성도를 높이기 위해서 점프하고 있는 순간의 애니메이션을 추가해주자.

스테이트를 추가하고, 기존 Grounded에 연결해주면 된다.

 

다음으로 점핑 -> Airborne 변환이다.

변환 부분을 더블 클릭하지말고 한 번만 누르면 디테일 패널을 볼 수 있다.

여기서 Automatic Rule Based on Sequence Player in State 옵션을 활성화 해주자.

이를 활성화 해주면 점핑 애니메이션을 마추고 자연스럽게 Airborne 애니메이션으로 넘어가게 된다.

그리고 하단의 블렌드에서 지속 시간은 0.01초로 바꾸어 빠르게 전환되도록 해주었다.

 

착지에 대한 애니메이션도 추가해주자.

반대로 Airborne -> 랜딩의 애니메이션 state를 만들어주자.

 

다음으로 랜딩 -> Grounded 로 자연스럽게 애니메이션이 넘어가도록 Automatic Rule Based on Sequence Player in State을 활성화 해주고, 빠른 전환을 위해 Mode를 바꿔주자.

여기서는 Exponential Out 모드를 선택하였다.

 

이제 컴파일하고 실행해보면 점핑, 랜딩 애니메이션이 추가된 모습을 볼 수 있다.

 

여기서 조금 더 업그레이드 해보자.

이번엔 살아있을 때와 죽었을 때 state을 다뤄보자.

 

변환 조건은 IsDead를 통해 설정해주고, 살아있을 때는 기존 애니메이션을 그대로 사용한다.

아래와 같이 기존에 만들었던 스테이트 머신을 사용하여, 스테이트 안에 스테이트를 사용할 수도 있다.

 

죽었을 때는 기존에 사용하던 Death_Forward 애니메이션을 그대로 할당해주면 된다.

이를 토대로 AnimGraph가 굉장히 간단해진다.