2025-05-30 TIL

알고리즘 문제

이번 문제는 최근에 푼 3레벨 문제들보다 상대적으로 쉬웠습니다.
하지만 시간 복잡도에 유의해서 풀어야했고, 이 부분에 대해 고민이 좀 있었습니다.
스택을 사용했는데, 자료구조를 잘 선택했기 때문에 문제를 잘 풀어낼 수 있었다고 생각합니다.
그래도 문제를 푸는 시간 자체는 아직 오래 걸려서 이 부분에 대해 아직 신경써야할 것 같습니다.
[프로그래머스][C++] 110 옮기기

최종 프로젝트

스폰에 의해 메시를 뚫는 문제 해결

몬스터와 플레이어 캐릭터의 스폰 로케이션이 땅의 표면으로 설정되어 있습니다.
이때, 몬스터와 플레이어의 피벗이 캐릭터의 중심에 위치해있기 때문에 바닥을 뚫린 상태로 스폰되는 문제가 있었습니다.

이 문제는 플레이어 캐릭터와 각 몬스터의 크기가 다르다는 점을 고려하여 해당 문제를 수정해야했습니다.
만약, 땅의 표면으로부터 일정 거리를 두어 스폰시키자는 의견이 있었는데, 이 경우 몬스터마다 크기가 다르기 때문에 크기가 작은 몬스터는 공중에 뜬 상태로 스폰될 것이고, 크기가 큰 몬스터는 기존대로 바닥을 뚫고 스폰된다는 문제가 있을 것이었습니다.

이를 해결하기 위해 다른 방법을 생각해보았고, 몬스터와 플레이어 캐릭터를 스폰한 후 캡슐 컴포넌트의 높이를 구해 스폰한 위치에서 캡슐 컴포넌트의 크기만큼 더하는 방법을 생각하여 해당 방법을 구현해보았습니다.
이 방법을 사용했을 때, 스폰하고 위치를 한번 더 변경하게 되어 연산이 증가했지만 버그를 해결할 수 있었습니다.

새로운 기능 구현

플레이어 캐릭터가 소유한 무기가 버려지도록 함수를 추가로 구현해보았습니다.
해당 함수는 UI에서 특정 슬롯을 일정 시간동안 클릭하고 있을 때, 무기 슬롯이 가득 찬 상태에서 새로운 무기를 획득할 때 호출 됩니다.

무기를 버릴 때, 드랍된 액터를 의미하는 클래스로 생성하고 필요한 값을 설정해주었습니다.
기존에 장착 중인 무기를 버리는 경우 장착이 해제되도록 예외 설정도 해주었습니다.
이때, 구현했던 이벤트 디스패처를 호출하여 UI 또한 갱신되도록 해주었습니다.

Date:     Updated:

카테고리:

태그:

TIL 카테고리 내 다른 글 보러가기

댓글남기기