시야에 보이는지 검사
 

몬스터의 시야에 플레이어가 보이는지 체크 할 때, 몬스터의 전방 벡터를 중심으로 90도 이하이면 시야에 있고,
90도 이상이면 몬스터 뒤에 있는것이다.

아래 그림과 같이 몬스터의 위치가 (1, 1)  시야 벡터가 (0, 1)일때, 플레이어 위치가 A(2, -2), B(1, -1)인 경우
시야에 들어 가는지 알아보자?

시야에 들어 가는지 알기 위해서는 아래의 사항만 알면 된다.

내적의 특징

a  dot  b의 값이 0이면  각도는 0도이다.
a  dot  b의 값이 음수이면  90도 보다 크다
a  dot  b의 값이 양수이면  90도 보다 작다

A위치의 경우

위치 벡터는 (2 - 1, -2 - 1) = (1, -3)

U = X1Y1 + X2Y2  = 0*1 + 1*(-3) = -3

U값이 음수 이므로 A의 위치는 몬스터의 시야에 없다.

 

B위치의 경우

위치 벡터는 (-2 - 1, 2 - 1) =  (-3, 1)

U = X1Y1 + X2Y2  = 0*(-3) + 1*1 = 1

U값이 양수 이므로 B의 위치는 몬스터의 시야에 있다.

[펌]
제우 미디어 : 게임 프로그래머를 위한 기초 수학과 물리