2016-05-19 6 views
0

私はセンサーから、O(起点)、W(UP)、V(前進)、U(右)の4つのパラメータを取得しています。これらの値はVector3の要素です。スペースにはありますが、オブジェクトが行うすべてのムービーメットを表す回転を見つけることはできません。GameObjectの姿勢に基づいてどのように角度を取得できますか?

これは私が(これはエントリーベクターのための新しい値を持つすべてのフレームを実行します)これまでに取得されるものです:

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の形で回転を与えることができます。あなたが1つの角度を取得したい場合はYourGameObject.transform.rotation.eulerAngles.xYourGameObject.transform.rotation.eulerAngles.yまたはYourGameObject.transform.rotation.eulerAngles.z

+0

実際には私は一連の空間位置を持っていて、私はある位置と別の位置との間の角度を抽出したいと思っています。 – Ztrusco

+1

2つのオブジェクトの間の角度を取得したいですか? (申し訳ありませんが、私はあなたが欲しいものを本当に理解していません) –

+0

私の更新を確認してください。 – Ztrusco

関連する問題