RedChiken / TreasureHunter

0 stars 0 forks source link

Climbing #45

Closed RedChiken closed 4 years ago

RedChiken commented 4 years ago

등반이 가능한 오브젝트들에 대한 구현 방식을 재정리

오브젝트의 콜리전을 지정. 캐릭터 배 앞에 작은 component를 설치. 그리고 이 component 위와 아래에 component를 설치. 이 3개의 component의 overlap 상태에 따라 등반과 ledge 상태 선택 가능. image

image

image

image

image

명확한 Animation 재생과 상태 적용을 위해 다이어그램을 다시 작성. 이를 기반으로 제대로 만들어보자.

RedChiken commented 4 years ago

범위 밖에서 상호작용을 해도 Climb 상태가 되는 경우가 있다. 상호작용 코드에 있는 조건이 잘못된 것 같다.

RedChiken commented 4 years ago

Climb 조건이 Falling이 빠져 있고, MovementMode만 체크를 하다보니 아무때나 Climbing이 가능하였다. 조건을 수정하여 시도때도없이 Climbing이 되는 것을 막았다.

RedChiken commented 4 years ago

Client에서는 MovementType이 Climb로 바뀌지 않는다. 이것이 원인이라 예상 중이다.

RedChiken commented 4 years ago

MovementType은 코드가 누락이었지만 정말 문제는 MovementMode였다. 버튼을 누르는 순간에는 값이 바뀌지만, 그 직후에 원상복귀된다.

RedChiken commented 4 years ago

MovementMode 값 변경을 RPC 함수로 묶어서 사용하니까 해결되었다. 생각해보니 이걸 그냥 하는것 자체가 멍청한 짓이었다. 각 Client/Server에 Character를 생성해놓고 Controller가 권한 있는 Character만 움직이면서 권한 없는 Character는 권한 있는 Client로부터 움직임을 받아온다. 때문에 MovementComponent는 Character와 같이 RPC로 값이 공유되어야 한다. 그 안에 변수를 바꾸는 것도 RPC로 묶어줬어야 했다.

RedChiken commented 4 years ago

기존 구조로는 도저히 구현이 안되서 바뀐 구조로 적용. 차이점은 다시 한번 Sub-FSM을 생성하느냐 아니냐의 차이.

그 결과 대부분의 Animation이 정상작동한다. 다만 아직 Exit Climb 부분이 정상적으로 작동하지 않는다. 물론 보는 것에는 문제가 없지만 의도했던 바를 구현하려 한다.