플레이어와 몬스터가 있을 때, 몬스터가 플레이어의 어느 방향에 있는지 어떻게 체크 할까?
1. 내적
길이가 1인 벡터끼리의 내적은 -1 ~ 1 사이의 값을 반환합니다. 방향이 정 반대인 경우는 -1
방향이 완전 같은 경우는 1을 반환합니다.
이러한 내적의 성질을 이용하여 몬스터의 방향을 유추할 수 있습니다.
1.1 방향 벡터 구하기
몬스터의 위치에 플레이어의 위치를 뺀 vector의 길이를 1로 만들면 몬스터로의 방향 벡터를 구할 수 있게됩니다
1.2 내적하기
몬스터의 방향 벡터와 플레이어의 forward 벡터를 내적한 값이 0.7보다 크다면 정면에 있다고 유추 할 수 있고,
-0.7보다 작다면 뒤에 있다고 유추할 수 있겠습니다.
2. 외적
정면과 뒷면은 forward 벡터의 내적을 통해서 구할 수 있다면 왼쪽 오른쪽은 어떻게 구할까?
forward 벡터때와 같은 계산식을 사용하기 위해 right vector를 구해야합니다.
유니티나 언리얼의 경우 right vector을 내장 함수를 통해 바로 구할 수 있지만 특수한 상황에서 직접 계산해줘야 하는 경우가 있습니다.
ex) 캐릭터가 회전없이 이동하는 상황에서 이동 방향의 오른쪽을 구할 때
이 때, 외적을 통해 right Vector를 구할 수 있습니다.
2.1 right 벡터 구하기
외적은 두 방향 벡터를 넣으면 두 방향벡터에 수직하는 벡터가 나오는 성질이 있습니다.
이러한 성질을 이용하여 forward 벡터와 Up vector(0, 1, 0)을 외적하면 right 벡터가 나옵니다.
2.2 내적하기
이후 right 벡터와 몬스터로의 방향 벡터를 내적한 값이 0.7보다 크다면 오른쪽에 있다고 판단할 수 있겠고,
-0.7보다 작다면 왼쪽에 있다고 판단할 수 있겠습니다.