[Toy][Unity] Npc 이동 로직 고찰

0시0분·2025년 3월 6일
0

Toy

목록 보기
17/18

퀘스트 진행 과정에서 npc의 자동이동은 꼭 필요한 부분이었다.
이동 방식에 대해 고민을 많이 했는데, 고민 과정과 결과를 기록해보고자 한다.


1. 자유이동

: 캐릭터의 이동 로직을 그대로 적용했기 때문에, 도착 지점만 지정해주면 알아서 이동하지 않을까 생각했음.

  • 문제점 : 아주 많음.
    일단 플레이어와 동시에 이동할 때 중간에 장애물이 있거나 하면 동선이 이상해지고 안예쁨.
    너무 자유분방하게 돌아다님.
    일일히 목적지 도착 여부를 체크하기도 번거로움.
    이 당시에는 npc에도 충돌처리를 넣어뒀어서 움직이다 플레이어랑 부딪힐 경우 경로 이탈 현상 발생.

  • 해결 시도 :
    npc의 충돌 판정도 제거해봤지만 여전히 일행이 아니라 싸운 친구들 처럼 따로 다니는 경우가 발생.
    다른 방법 찾기로 함


2. 플레이어 뒤 따라가기 (알만툴 방식) - 1차

: 경로가 따로 각자 생성되는게 문제라고 생각해서 플레이어의 경로를 따라가도록 구현해보기로 했다.
알만툴에서 npc들이 플레이어 뒤를 졸졸 따라가는 모습을 생각하고 만들어봤다.

[(npc 현재위치) → (플레이어 현재위치)] + [플레이어 경로] + [(플레이어 도착지점) → (npc 도착지점)]

처음 생각한 방식은 이랬다.

  • 문제점 :
    npc의 위치에서 플레이어의 위치로 가는 경로가 제대로 구해지지 않았다.
    한바퀴를 빙 돌아가거나, 두 캐릭터가 겹쳐져서 걸어가는 문제가 발생했다.
    알만툴처럼 플레이어 한칸 뒤에서 따라오길 바랐는데.. 생각처럼 쉽게 되지 않았다.

  • 해결시도 :
    생각해보니 어차피 npc와의 상호작용은 플레이어와 1칸 이내에 존재할 때만 가능하고,
    캐릭터의 이동 역시 좌표 1칸 단위로 이루어진다.
    퀘스트를 진행하기 위해서는 npc와의 상호작용이 이루어져야 함 👉 npc와 캐릭터의 거리가 좌표 1칸 이내임
    그렇다면 굳이 경로를 구하지 않고 npc가 위치한 좌표만 추가하면 되지 않을까?


3. 플레이어 뒤 따라가기 (알만툴 방식) - 현재

: 어차피 플레이어와 npc의 거리가 한칸 차이니, 플레이어의 경로에 npc의 현재위치를 추가함.
이러면 정확히 플레이어 한칸 뒤에서 따라오게 된다!

도착지점 역시 보통 플레이어와 한칸 떨어진 위치에 서있게 되므로
경로에서 플레이어의 도착지점을 제거하고, npc의 도착지점을 추가하면
자연스럽게 한칸 뒤에서 따라오다 알아서 자기 목적지로 가게 된다.

🔼 흰색 : 플레이어 경로 / 빨간색 : npc 경로

0개의 댓글