waypoint 웨이포인트
몹이 이동할때 장애물을 피해 타겟에 접근할수 있도록
웨이포인트 작업을 진행하였다
생각보다는 빨리 작업이 완료되었는데,
그 구현에 관한 설명이다
위 이미지에서 바위 주위로 여섯개의 포인트가 찍히고,
라인이 연결되어 표시되고 있는데,
저 점들이 웨이포인트 이다
몹과 타겟의 사이에 바위가 있고,
몹이 바위를 피해 지나가야 한다고 상상해보자.
구현에 관해 이론적으로 정리하자면,
1. 웨이포인트의 중심과 크기(반지름) 를 구해둔다
2. 몹이 타겟을 가지고 있을때,
몹에서 타겟으로 가는 선분을 구해두고,
이 선분과 웨이포인트를 둘러싸는 구가 교차하는지를 검사
-> 반직선 선분과 구의 교차 체크
3. 선분과 구가 교차한다면,
선분과 웨이포인트 각각의 선분이 교차하는지를 다시 검사
-> 두 선분의 교차 검사
4. 교차한다면, 웨이포인트 경로를 검색하고, 만들어진 경로를
몹의 이동시에 적용
-> 경로는 여러가지 방식으로 구할수 있을것 같은데,
-> 나의 경우는 몹의 위치에 가장 가까운 포인트를 첫번째 이동점,
-> 타겟에 가장 가까운 포인트를 마지막 이동점으로 두고,
-> 웨이포인트가 연결된 순서대로, 웨이포인트의 인덱스를 기록
-> 몹은 연결된 웨이포인트 인덱스대로 이동을 하면서,
-> 웨이포인트에 도착하면, 다음 웨이포인트 인덱스로 이동
웨이포인트는 1초마다 갱신을 시키는데, (매틱마다 할필요는 없을듯)
갱신하여, 기존에 가지고 있는 웨이포인트의 정보가 다를경우,
새로운 웨이포인트를 적용시킨다
-> 웨이포인트 정보가 다를 경우는 크게 두가지 정도인데,
-> 웨이포인트 영역이 여러개 있을경우, 다른 웨이포인트에 교차될수 있다
-> 타겟에 가장 가까운 웨이포인트 위치가 변경되었을때( 타겟이 이동중일때 바뀔수 있다)
'프로그래밍' 카테고리의 다른 글
스크린 스페이스 데칼 구현 원리 - screen space decal - (65) | 2017.07.12 |
---|---|
shimmering shadow edges, stable shadow, stable csm (0) | 2017.07.06 |
volume fog - 파헤치기 - depth buffer VS volume buffer (0) | 2016.12.05 |
volume fog - 파헤치기 - 밖에서 볼때, 안으로 들어갈때 (0) | 2016.11.06 |
volume fog - 파헤치기 - 볼륨 렌더링은 이렇게 (0) | 2016.10.26 |