[TIL] 2025-06-13 알고리즘 문제, 몽타주 재생 취소 구현, 무기 교체 애니메이션 구현
2025-06-13 TIL
알고리즘 문제
이번 문제는 설명이 조금 어렵게 느껴져서 문제를 이해하는데 오랜 시간이 걸렸습니다.
문제를 어떻게 풀어야할지에 대해 고민을 많이 했는데 3레벨 문제에서 수학적인 부분이 나오니 굉장히 풀기 어려웠습니다.
결과적으로 정해놓은 시간안에 문제를 풀어내지 못했고, 답을 찾아보았습니다.
한번 문제를 어떻게 풀어내야할지 파악한 후로는 각 코드도 잘 이해했고, 수학적인 부분에 대해서도 어느정도 이해했다고 생각합니다.
하지만 시간이 지나서도 언제든 다시 풀 수 있어야 하므로, 나중에 다시 복습하고자 합니다.
[프로그래머스][C++] 억억단을 외우자
최종 프로젝트
몽타주 재생 취소 구현
몽타주 재생 취소는 일종의 몽타주 스킵 기능입니다.
재생 중이던 몽타주의 재생을 멈추어 재생을 취소하고 로코모션을 재생하거나 다른 몽타주가 재생되도록 합니다.
몽타주가 재생 중일 때, 몽타주 재생을 강제로 끝낼 경우 애님 노티파이 스테이트가 호출되지 않는다는 문제가 있었습니다.
이 문제는 기존 몽타주에서 플레이어 캐릭터의 상태를 변화하는 애님 노티파이 스테이트를 사용하는 경우 캐릭터의 상태가 제대로 관리되지 않는다는 문제가 있었습니다.
이를 해결하기 위해서 다양한 방법으로 알아본 결과 몽타주의 재생을 강제로 끝내기 전에 남은 재생 시간 동안에 포함된 애님 노티파이 스테이트를 모두 참조하여 NotifyEnd
함수가 호출되도록 해주었습니다.
NotifyEnd
를 호출한 이유는 해당 이벤트에서 상태를 원상복구하거나 초기값으로 복구하기 때문입니다.
특정 조건에서는 몽타주를 스킵하지 못하게 하기 위해서 별도의 로직 또한 구현해주었습니다.
해당 구현은 애님 노티파이 스테이트를 사용하여 해당 구간에서는 스킵이 되지 않도록 해주었습니다.
무기 교체 애니메이션 구현
무기 교체 애니메이션을 추가해 주었습니다.
무기 교체는 애님 노티파이를 추가해주어서 몽타주의 특정 시점에 무기가 교체되도록 해주었습니다.
이 과정에서 애님 노티파이는 매개변수를 가질 수 없다는 문제에 맞닥드렸습니다.
결과적으로 고민 끝에 무기 정보를 가지는 액터 컴포넌트에 변경할 무기에 대한 정보를 멤버 변수로 가져 노티파이에서 참조할 수 있도록 해주어 문제를 해결해주었습니다.
해당 작업을 진행하면서 애님 인스턴스 레이어간 전환이 자연스럽게 이루어지도록 하고싶었습니다.
그래서 다음과 같은 방법을 알아내어 진행해 문제를 해결해보았습니다.
애님인스턴스 블루프린트에서 상속받은 인터페이스의 애니메이션 출력에서 블렌드 타임을 추가해 주었고, 로코모션 부분들에 관성화(inertialization)를 사용하여 애니메이션 레이어가 전환되어도 자연스럽게 전환될 수 있도록 설정해주었습니다.
애니메이션에 대한 작업이 가장 어렵고 복잡하다는 느낌을 받는데 그래도 완성해냈을 때 어려운 만큼 성취감이 높은 것 같습니다.
댓글남기기