프로그래밍 2017.04.18 20:29

 

waypoint 웨이포인트

 

 

 

 

몹이 이동할때 장애물을 피해 타겟에 접근할수 있도록

웨이포인트 작업을 진행하였다

 

생각보다는 빨리 작업이 완료되었는데,

그 구현에 관한 설명이다

 

위 이미지에서 바위 주위로 여섯개의 포인트가 찍히고,

라인이 연결되어 표시되고 있는데,

저 점들이 웨이포인트 이다

 

몹과 타겟의 사이에 바위가 있고,

몹이 바위를 피해 지나가야 한다고 상상해보자.

 

 

구현에 관해 이론적으로 정리하자면,

 

1. 웨이포인트의 중심과 크기(반지름) 를 구해둔다

 

2. 몹이 타겟을 가지고 있을때,

몹에서 타겟으로 가는 선분을 구해두고,

이 선분과 웨이포인트를 둘러싸는 구가 교차하는지를 검사

-> 반직선 선분과 구의 교차 체크

 

3. 선분과 구가 교차한다면,

선분과 웨이포인트 각각의 선분이 교차하는지를 다시 검사

-> 두 선분의 교차 검사

 

4. 교차한다면, 웨이포인트 경로를 검색하고, 만들어진 경로를 

몹의 이동시에 적용

-> 경로는 여러가지 방식으로 구할수 있을것 같은데,

-> 나의 경우는 몹의 위치에 가장 가까운 포인트를 첫번째 이동점,

-> 타겟에 가장 가까운 포인트를 마지막 이동점으로 두고,

-> 웨이포인트가 연결된 순서대로, 웨이포인트의 인덱스를 기록

-> 몹은 연결된 웨이포인트 인덱스대로 이동을 하면서,

-> 웨이포인트에 도착하면, 다음 웨이포인트 인덱스로 이동

 

 

웨이포인트는 1초마다 갱신을 시키는데, (매틱마다 할필요는 없을듯)

갱신하여, 기존에 가지고 있는 웨이포인트의 정보가 다를경우,

새로운 웨이포인트를 적용시킨다

-> 웨이포인트 정보가 다를 경우는 크게 두가지 정도인데,

-> 웨이포인트 영역이 여러개 있을경우, 다른 웨이포인트에 교차될수 있다

-> 타겟에 가장 가까운 웨이포인트 위치가 변경되었을때( 타겟이 이동중일때 바뀔수 있다)

 

 

저작자 표시 비영리 변경 금지
신고
posted by 죠운죠운

댓글을 달아 주세요


티스토리 툴바