대형 프로젝트 - C# + 유니티로 만드는 MMORPG 게임 개발/(6) 라이브서비스

2D MMO 라이브 서비스 - (3 - 3) DummyClient (3)

monstro 2025. 10. 14. 11:38
728x90
반응형

- 개요

몬스터의 AI를 수정하여 플레이어를 추적하는 방식을 개선해보겠습니다.

몬스터의 위치 좌표를 기반으로 주어진 범위안에 있는 플레이어를 추적하도록 수정합니다.

 

1) GameRoom 클래스

GetZone 함수 오버라이드 및 수정

 

GetZone 함수를 오버라이드하여 X / Y 좌표 값을 받도록 수정하였습니다.

또 오버라이드한 함수를 기존의 GetZone 함수에서 사용하도록 로직을 변경하였습니다.

 

GetAdjacentZones 함수 수정

 

인접한 Zone을 찾는 GetAdjacentZones 함수를 위와 같이 수정합니다.

인자로 받은 CellPos를 기준으로 좌측 상단부터 시작하여 우측 하단까지 순회하면서 Zone을 저장하고 반환합니다.

 

 

GetAdjacentPlayers 함수를 새롭게 추가하였습니다.

GetAdjacentZones 함수를 호출하여 반환된 Zone들로부터 Player들을 찾아 반환합니다.

 

FindPlayer 함수를 대체하는 함수

 

FindClosestPlayer 함수를 새롭게 추가하여 FindPlayer 함수를 대체합니다.

인접한 Zone에 위치한 Player들을 가져와 가까운 순서대로 정렬한 후에 A* 알고리즘을 통해 판단합니다.

 

- 최종 실행 결과

동영상 서비스가 종료되어 해당 콘텐츠를 재생할 수 없습니다.

 

728x90
반응형