[MSW] 모험가 키우기 - 2 (프로토타입을 위한 기본 플레이어 제어)

2022. 12. 24. 21:25DIY/[개발 중][MSW] 모험가 키우기

내가 알고자 하는 건

액션과 애니메이션 재생의 플로우.

이걸 알아야 원하는 대로 방치형 게임의 무브먼트를 연출할 수 있음.

 

 

AvatarBodyActionSelectorComponent는 DefaultPlayer에 없다.

그럼 ActionStateChangedEvent는 없어도 된다는 뜻인가?

그게 아니라 BodyActionStateChangeEvent가 발생하면

그 값으로 ActionStateChangedEvent를 호출한다.

또한 내부 로직을 볼 수 없을 뿐, 애니메이션 변경 과정은 위의 절차대로 진행된다.

그리고 BodyActionStateChangeEvent로 애니메이션을 제어할 때는 공통적으로

MapleAvatarBodyActionState 값을 이용해 아바타의 애니메이션을 구분한다.

 

 


 

 

 

그래서 실제로 캐릭터를 움직이려면 어떻게 해야 하는가?

캐릭터 엔티티에 ActionStateChangedEvent 이벤트를 보내는 것이다.

이벤트가 발생하면 액션Name에 따라 캐릭터의 애니메이션이 변경된다.

그리고 DefaultPlayer모델이 가지고 있는 RigidbodyComponent의 AddForce 메서드를 통해

캐릭터를 움직이게 하는 사용자 지정 함수를 호출하게 할 수 있다.

 

 

tip) AddForce로 가해지는 힘은 마찰력의 영향을 받는다.

따라서, 점프 상태일 때 AddForce를 하면 엄청난 가속을 받게 된다.

 

 

 

 

 

 


PlayerControllerComponent 문서 보고 AddCondition에 대해 알아보기