게임/Unity3D

[Unity3D] 우향벡터 간단하게 구하기

Binceline 2012. 10. 31. 15:26

var forward = 전방벡터;

forward.y = 0;

forward = forward.normalized;


// Right vector relative to the camera

// Always orthogonal to the forward vector

var right = Vector3(forward.z, 0, -forward.x);

----------------------------------------------

위 코드는 unity3d의 기본 패키지인 ThirdPersonController.js의 코드이다.


전방벡터를 정규화하고 Vector3(forward.z, 0, -forward.x); 와 같이

전방벡터의 z값, x값을 바꿔 넣어주면 우향벡터가 된다.

여기서 -x로 대입해 주는 이유는 왼손 좌표계이기 때문이다.


유니티에서는 오브젝트의 z축 방향이 전방벡터와 같다. 그리고 유니티의 좌표계는 왼손 좌표계이기 때문에,

z축에 [x>=0] 인 정수를 + 해주면 앞으로 이동하게 되지만, 오른손 좌표계에서는 -를 해줘야 한다.

(화면에서 오브젝트가 앞으로 이동한다고 생각해 보면 쉽게 이해할 수 있다.)


*혹은 벡터의 외적을 해도 된다..!



우향벡터 사용법. 상대를 인식할 때 상대 쪽으로 회전하는 알고리즘에서 사용해도 되고, 

조이스틱으로 이동한다면 조이스틱을 좌우로 얼마나 이동했는지, 상하로 얼마나 움직였는지를 체크하여

Vector3 targetDirection = h * right + v * forward;

처럼 해 주면 최종적으로 이동하려는 방향을 구할 수 있다.

반응형