}

유니티 객체가 위로 향하는지 아래로 향하는지 확인하는 방법

게임을 만들다 보면, 특정 오브젝트가 어느 방향을 향하고 있는지 판단해야 할 때가 많습니다.

예를 들어, 병(bottle) 오브젝트가 뒤집혀서 뚜껑이 아래로 향했는지 확인하고 싶을 때가 그렇죠.

 

유니티에서는 Transform.up, Transform.forward, Transform.right 같은 방향 벡터를 제공하므로, 이를 활용하면 간단히 방향을 체크할 수 있습니다.

bool isUpsideDown = Vector3.Dot(transform.up, Vector3.down) > 0;

Vector3.Dot (내적, Dot Product) 활용하기

 

유니티 Vector3

(1) ProjectOnPlane함수설명예시ProjectOnPlane(Vector3 vector, Vector3 planeNormal)vector를 planeNormal에 평면에 투영한 벡터를 반환합니다. 결과 벡터는 plane에 평행합니다.경사면을 따라 이동하는 캐릭터의 움직

wlsdn629.tistory.com

 

내적(Dot Product)은 두 벡터가 얼마나 같은 방향을 향하고 있는지 알려주는 수학적 연산입니다.

  • 결과 값 범위:
    • 1 : 완전히 같은 방향
    • 0 : 수직
    • -1 : 완전히 반대 방향

즉, 두 벡터가 비슷한 방향일수록 값이 커지고, 반대일수록 값이 작아집니다.

 

병 뚜겅이 아래를 향하고 있다면 -1에 가까워지고, 병 뚜겅이 위를 향한다면 1에 가까워집니다.

 

위 아래 말고도, 오른쪽 왼쪽을 확인할 수도 있습니다.

// 앞 방향이 월드 좌표계 기준 오른쪽을 향하는지 체크
bool isFacingRight = Vector3.Dot(transform.forward, Vector3.right) > 0;

-1에 가까우면 왼쪽을, 1에 가까우면 오른쪽을 향한다고 생각하시면 됩니다.