현재 방향에서 해당 방향까지 회전한 각도를 구하는 것이다.
Quaternion q2 = Quaternion.Slerp(rotation, q, range); Vector3 direction2 = q2 * forward; Debug.DrawLine(position, position + direction2 * 5, Color.green);
회전 행렬(공간)에 방향 벡터를 곱하면 공간만큼 회전된 벡터가 나온다. 유니티는 열 우선이라 우결합을 사용한다.
변화량을 넣어 해당 값만큼 Rotation이 움직이도록 한다.
Quaternion q2 = Quaternion.RotateTowards(rotation, q, delta);
Invoke는 호출한 해당 함수를 정해진 시간 동안 호출한다. IsInvokeing은 인보크가 실행 중이면 true이다. CancelInvoke는 인보크를 취소하는 것을 말한다.
if(bDebug) { bDrawSphere = true; if(IsInvoking("End_DrawSphere"))//인보크가 실행중이라면 CancelInvoke("End_DrawSphere"); //인보크 취소 Invoke("End_DrawSphere", 5); }
타겟팅을 할 때 내적이 1에 가까울수록 플레이어와 가깝게 있는 것으로 Dot을 이용하여 누가 플레이어와 가까운지 찾을 수 있다.
float angle = Vector3.Dot(transform.forward, direction.normalized);