2016-05-19 135 views
0

我从传感器4参数中获得每帧O(原点),W(UP),V(FORWARD)和U(RIGHT),它们是Vector3元素,这个值可以知道我的对象的位置在空间中,但我无法找到旋转来表示对象所做的所有动作。如何根据游戏对象的位置获取角度?

这是我得到这么远(此运行与入门载体新值每帧):

Vector3 vetO = new Vector3(entry[0], entry[4], entry[8]); //o 
Vector3 vetU = new Vector3(entry[1], entry[5], entry[9]); //u 
Vector3 vetV = new Vector3(entry[2], entry[6], entry[10]); //v 
Vector3 vetW = new Vector3(entry[3], entry[7], entry[11]); //w 

//Here i'm doing this to analize the rotation of a plan 
vetW.x = 0; 
vetU.z = 0; 
vetV.y = 0; 

float angleX = Vector3.Angle(vetW, Vector3.up); 
float angleY = Vector3.Angle(vetV, Vector3.forward); 
float angleZ = Vector3.Angle(vetU, Vector3.right); 

//This is because unity bug, when angle is up to 180º 
angleX = vetW.z < 0 ? -angleX : angleX; 
angleY = vetV.x < 0 ? -angleY : angleY; 
angleZ = vetU.y < 0 ? -angleZ : angleZ; 

Vector3 angles = new Vector3(angleX, angleY, angleZ); 
transform.eulerAngles = angles; 
transform.localPosition = vetO; 

回答

0

如果我理解正确的话,你想获得一定的游戏物体的旋转,对不对?

要做到这一点,您可以使用YourGameObject.transform.rotation.eulerAngles为您提供Vector3形式的旋转。如果你想得到一个角度,你可以使用YourGameObject.transform.rotation.eulerAngles.xYourGameObject.transform.rotation.eulerAngles.yYourGameObject.transform.rotation.eulerAngles.z

+0

实际上,我有一系列的空间位置,我想提取一个位置和另一个位置之间的角度。 – Ztrusco

+1

所以你想获得2个物体之间的角度? (对不起,但我真的不明白你想要什么) –

+0

请检查我的更新。 – Ztrusco

相关问题