2015-01-07 10 views
0

현재 저는 오큘 러스 리프트 (Oculus Rift)로 뭔가를 만들려고합니다.Quaternion을 통해 노테이션 회전

유일한 컨트롤은 Oculus 카메라입니다.

플레이어는 항상 앞으로 나아가지만, 나는 그가 회전하고 위아래로 움직일 수 있도록하고 싶습니다. 올라가려면 플레이어는 모든 방향에서 똑같이 10 °에서 45 ° 위로보아야합니다.

저는 현재 Unity를 사용하고 있으며, 카메라 회전에 대한 쿼터니언을 얻습니다.

스크립트를 수행하고 있습니까? 내가 어떻게 그것을 스스로 할 수 있을까요, 아니면 적어도 쿼터니온을 회전으로 변환 할 수 있습니까?

도움을 주시면 매우 감사하겠습니다.

답변

0

좋은 소식! 귀하의 목적을 위해 쿼터니언을 직접 다룰 필요가 없습니다. 그래도 벡터 수학이 도움이 될 수 있습니다.

transform.forward 모든 스크립트는 스크립트가 첨부 된 객체의 진행 방향을 알려줍니다. 카메라에 있으면 플레이어가보고있는 방향이됩니다.

카메라의 진행 방향과 플레이어가 앞으로 움직이는 방향을 사용하면 플레이어 회전에 필요한 정보를 계산할 수 있습니다.

Vector3.Angle(transform.forward, cameraObject.transform.forward) 두 가지 앞으로 방향 사이의 각도를 알려줍니다.

Vector3.Cross(transform.forward, cameraObject.transform.forward) 당신에게 회전의 축을 줄 것이다.

당신은 각도가 원하는 범위 내에 있는지를 확인하고, 회전을 수행

transform.Rotate(Vector3.Cross(transform.forward, cameraObject.transform.forward), rotationSpeed * Time.deltaTime)를 사용할 수있다. 회전이 원하는 방향과 반대 방향 인 경우 두 매개 변수의 순서를 Vector3.Cross으로 전환해야 할 수 있습니다.