Unity 이론 (Slerp, 공간 변환, Rotate Towards, Invoke, Dot)

로젠·2024년 5월 8일
0

게임 프로그래밍

목록 보기
36/49
post-thumbnail

Slerp

현재 방향에서 해당 방향까지 회전한 각도를 구하는 것이다.

Quaternion q2 = Quaternion.Slerp(rotation, q, range);
Vector3 direction2 = q2 * forward;
Debug.DrawLine(position, position + direction2 * 5, Color.green);

공간 변환

회전 행렬(공간)에 방향 벡터를 곱하면 공간만큼 회전된 벡터가 나온다. 유니티는 열 우선이라 우결합을 사용한다.

RotateTowards

변화량을 넣어 해당 값만큼 Rotation이 움직이도록 한다.

Quaternion q2 = Quaternion.RotateTowards(rotation, q, delta);

Invoke

Invoke는 호출한 해당 함수를 정해진 시간 동안 호출한다. IsInvokeing은 인보크가 실행 중이면 true이다. CancelInvoke는 인보크를 취소하는 것을 말한다.

if(bDebug)
{
    bDrawSphere = true;
    if(IsInvoking("End_DrawSphere"))//인보크가 실행중이라면
        CancelInvoke("End_DrawSphere"); //인보크 취소
    Invoke("End_DrawSphere", 5);
}

Dot

타겟팅을 할 때 내적이 1에 가까울수록 플레이어와 가깝게 있는 것으로 Dot을 이용하여 누가 플레이어와 가까운지 찾을 수 있다.

float angle = Vector3.Dot(transform.forward, direction.normalized);

0개의 댓글