폴리곤을 띄운후 폴리곤이 비행기라고 생각하고 적 폴리곤이 플레이어 폴리곤으로 따라오게 하는 방법이다.
그림과 같이 설명을 하자면 먼저 초록색 화살표가 적의 Up벡터이다.
그리고 빨간색 화살표가 적과 플레이어 사이의 방향 벡터이고, 파란색 화살표가 각각 왼쪽방향벡터, 오른쪽방향벡터이다.
먼저 적이 플레이어를 바라보는 각을 구해야하는데, 앞에서 배운 내적의 공식을 이용해서 이 각을 구해낼 수 있다.
D3DXVec3Dot 함수를 이용하면, 두 벡터 사이의 내적값을 구할 수 있다.
내적을 하게 되면, 이 값은 cosΘ값이 나오게 되므로
acos(내적값)을 해서 우리가 원하는 Θ을 뽑아낸다. 여기서 나오는 값은 각도가 아니고 라디안 값이다.
그럼 이제 얼마만큼의 각도로 가야할지는 정해진것이다.
그다음은 움직여야 하는 방향인데 아래 그림을 보고 이야기 하자면
딱 보았을때 적은 어디로 움직여야 자연스러울까?
아마 보통 정상적이라면 오른쪽으로 적이 머리를 돌려야 할 것이다.
그럼 이 오른쪽으로 돈다는것은 어떻게 정해줄것인가?
여기에 대한 해답은 왼쪽방향벡터와 오른쪽방향벡터로 구할 수 있다.
왼쪽파란색 방향벡터와 빨간색 방향벡터를 내적한값과 오른쪽파란색 방향벡터와 빨간색 방향벡터를 내적한값을 비교해서
내적값이 양수인 쪽으로 가면 되는것이다.
결과물을 살짝응용하면 적군이 플레이어를 따라오게 만들 수 있다.
반응형
'Programming > DirectX 3D' 카테고리의 다른 글
DrawPrimitive외 여러 Draw함수들 (0) | 2012.02.23 |
---|---|
Visual Studio 2008에서 DirectX 3D 프로그래밍 시작하기 (1) | 2012.02.06 |
DirectX 3D - 기초 용어 - (1) | 2012.02.05 |