오늘은 길고 길었던 Climb 기능을 일단락 하게 되었습니다.

 

우선 어제 가장 문제가 되었던 Top Exit에 대해 3가지 해결법을 준비했습니다.

1. Top Exit 시 Teleport

2. Top Exit 시 모든 Collision을 제거

3. 이동키에서 손을 뗄 시 그 즉시 정지(관성도 없음)

 

이 중 3번을 함으로써 해결법이 가시권에 들어왔습니다.

해결법은 MaxFlySpeed와 BrakingDecelerationFlying였습니다.

MaxFlySpeed는 MOVE_Fly 상태에서의 최대 속도를, BrakingDecelerationFlying은 비 이동 시 가속도를 지칭합니다.

즉, MaxFlySpeed가 50이고 BrakingDecelerationFlying이 50이면 1초동안 감속운동을 하며 멈추게 되는 것입니다.

저는 BrakingDecelerationFlying을 MaxFlySpeed의 10배로 잡아 0.1초만에 바로 정지하도록 만들었습니다.

 

이렇게 하고 나자 비로서 원하던 것이 보였습니다.

Exit From Top의 Notify는 정상 작동을 하고 있었습니다.

심지어 Animation이 벽에 막혀 재생되지 않은 것이 아니었습니다.

앞이 막혀 있다면 뒤로 밀려서 재생이 되었습니다.

그 뒤는 Input을 제한하고, ExitClimb를 지정하면서 실질적인 움직임을 맞추는 것이었습니다.

 

하지만 결국 Climb Animation 이후 실질적으로 벽에 오르지 못하는 문제에 직면했고,

이 부분을 Teleport로 해결했습니다.

Collision으로 해결하지 않은 이유는 Animation이 벽에 막혔을 때 재생되지 않은 것이 아니라, 

뒤로 밀려서라도 재생이 되기 때문이었습니다.

어차피 Character 위치는 재조정을 해야 했기 때문에, 굳이 Collision을 건들지 않고 Teleport만 사용했습니다.

 

이전에는 Teleport를 할 때 Character가 붕 뜨는 것 같아서 이를 꺼려했습니다.

하지만 이는 처음 테스트 한 Rope의 경우였고, Ladder와 Wall에서는 그렇게까지 어색하게 보이지는 않았습니다.

이는 Rope의 Animation이 더 위쪽을 잡고 올라가는 형식이라 그런 것으로 판단됩니다.

때문에 현재 상황에서는 고칠 수 없는 문제라 판단하고 이슈에서 제거했습니다.

 

많은 문제들이 해결되었지만 아직 완벽한 것은 아닙니다.

Wall은 Enter/Exit From Bottom과 Climb Up/Down Animation이 없어서 임시로만 해놓은 상태입니다.

때문에 기능도 완벽하게 작동하지 않습니다.

 

또한 Teleport 할 때 Rotation이 정상적으로 적용되지 않습니다.

Rotation을 잘못 계산한 것인지는 잘 모르겠지만,

여러 방안을 시도 했음에도 Teleport 할 때 뒤를 돈 채로 이동하지 않고 있습니다.

때문에 Enter From Top도 모든 Climb에 대해 정상적으로 작동하지 않고 있습니다.

 

그럼에도 이 기능을 이쯤에서 멈춘 이유는 과제로 제출해야하기 때문입니다.

현재 구현된 기능 중 문제가 발생하는 기능들이 존재하기 때문에 이 부분을 먼저 구현하고자 합니다.

 

그래서 다음 진행중인 일은 Trap의 MultiPlay 상에서의 기능 작동입니다.

Trap 자체는 사실 Character가 들어와 있으면 기능이 작동하기만 합니다.

하지만 그 구조가 졸속이다 보니 MultiPlay에서 한 Character로 인해 발동된 Trap이

다른 Character의 InRange로 인해 해제가 되기도 합니다.

또한 이 방식은 Trap이 1명의 Character에게만 반응하게 되어있습니다.

 

이 문제들을 해결하기 위해 Character의 InRange를 Semaphore나 Queue로 구현을 하고자 합니다.

그리고 이에 따라 ATHActorBase에서 각자 따로 구현되었던 ATH-Trap들을

ATHTrapBase 하위 Actor들로 통합하려 합니다.

오늘은 생성을 하고, 기존의 Trap들에게 있는 공통적인 선언부분만 선언해둔 상태입니다.

 

우선은 공통 기능을 구현한 뒤 상속 관계를 수정하여 무사히 Build를 하는 것이 내일 첫 목표입니다.

그 다음에는 구현한 기능을 개선하고자 합니다.

하루만에 하기 힘들 수 있지만, 내일 개발이 끝나고 시간이 남는다면 BreakPuzzle을 먼저 수정해보려 합니다.

 

'개발일지 > Treasure Hunter' 카테고리의 다른 글

20.07.06 개발일지  (0) 2020.07.06
20.07.05 개발일지  (0) 2020.07.05
20.07.03 개발일지  (0) 2020.07.03
20.07.03 개발일지 2  (0) 2020.07.03
20.07.03 개발일지  (0) 2020.07.03

Notify가 호출되지 않은 이유는 이것을 받기 위해서는 Character가 아니라

AnimInstance에서 Delegate를 생성해야 하기 때문이었습니다.

 

AnimInstance에 Notify 이벤트를 생성하고 나서, 이벤트가 호출되는 것을 확인했습니다.

다만 Top에서는 발생하지 않았는데, 구조적 문제보다는 다른 원인 때문이라 생각합니다.

 

현재는 두가지 원인을 예측합니다.

1. 이전부터 Top Exit Animation은 정상재생 되지 않고 있었다.
벽이 있을 경우 막히기 때문에 끝까지 Animation이 재생되지 않아 Notify가 발생하지 않았다.

2. Exit 한 이후로 계속해서 Character가 움직이면서 Notify에 도달하지 못했다.

 

이를 위해 3가지 방안을 생각 중입니다.

1. Top Exit 시 Teleport를 한다.

2. Top Exit 시 Character의 모든 Collision을 없애서 벽을 통과 할 수 있도록 한다.

3. 이동 키에서 손을 뗼 경우 이동속도는 물론 관성까지 모두 0으로 처리하여 완벽히 멈추도록 한다.

 

이 중 3번은 무조건 적용이 되어야 할 사항입니다.

그렇지 않으면 이벤트가 중복으로 호출될 수 있기 때문입니다.

1번은 한번 시도했던 방안이지만, 실제로 적용하면 Character가 매우 붕 뜨기 때문에 어디까지나 차선책입니다.

결국 2번이 제대로 작동 되느냐에 따라 완성도가 달라질 것 같습니다.

 

우선 내일은 3번부터 적용을 하고, Notify 발생 여부를 확인해가며 1번과 2번 중 적절한 것을 먼저 시도할 예정입니다.

'개발일지 > Treasure Hunter' 카테고리의 다른 글

20.07.05 개발일지  (0) 2020.07.05
20.07.04 개발일지  (0) 2020.07.04
20.07.03 개발일지 2  (0) 2020.07.03
20.07.03 개발일지  (0) 2020.07.03
20.07.02 개발일지  (0) 2020.07.02

새벽에 쓴게 사실 어제 써야 할 것이 12시가 넘어서 오늘 날짜로 적었습니다.

 

어제 Animation에 Notify를 받아서 Climb를 처리하는 것에 여러 문제를 남긴채로 개발을 멈췄습니다.

오늘은 이 중 Enter From Bottom, Move up, Move Down의 Animation이 정상적으로 작동되도록 하였습니다.

오랫동안 확인해본 결과 Idle 상태에서 Move 상태로 갔을 때

바로 Exit 조건까지 만족해버려서 Exit의 한 포즈로 고정이 되어버린 것이었습니다.

Exit 조건을 바꿨더니 문제를 해결할 수 있었습니다.

 

현재 Exit까지는 조건이 만족을 하지만,

Animation이 재생이 안된는지 Notify가 받아지지 않은지 이후 진행이 되지 않습니다.

그리고 Notify를 하면서 동시에 입력 금지와 이동속도, 관성 초기화를 하여 그 즉시 멈추도록 하고자 합니다.

'개발일지 > Treasure Hunter' 카테고리의 다른 글

20.07.04 개발일지  (0) 2020.07.04
20.07.03 개발일지  (0) 2020.07.03
20.07.03 개발일지  (0) 2020.07.03
20.07.02 개발일지  (0) 2020.07.02
20.07.01 개발일지  (0) 2020.07.01

+ Recent posts