2012-11-28 47 views
4

我一直在這個問題上一直在困擾着我一段時間,現在我處於我的頭頂,沒有弄清楚這一點。2個向量與旋轉的差異

問題:

目前試圖做一個假「搖擺」的時刻。我將播放器對象變成孩子的位置,您可以在按鍵過程中鎖定到某個對象。因此,我需要在抓鬥對象上獲得正確的旋轉,使得玩家的速度成爲抓鬥對象上正確的旋轉角度。

這並不意味着是2D,而是3D。導致這種頭痛的原因。

http://img843.imageshack.us/img843/7434/rotations.jpg

我想,如果我能得到的位置矢量,並且其中玩家將逐步轉向,如字符電機的速度方向的矢量,得到一個獨特的向量,而此矢量信息應該能夠正確旋轉grappleobject。但是,我認爲這很容易,但我一直在黑客這個小時,以獲得該向量差異來做旋轉,因爲它被認爲是。

TL:博士

2載體,這兩個到一個向量的差,這種載體控制grappleobject的旋轉爲「假」的擺動與固有速度運動。

如果會有答案,請提前致謝。

新增信息:

當前testings是這些。

///

母球是grappleobjects其更新其取決於觸發事件變換。
CurDirection是玩家在世界向量中的標題。
CurPos是玩家在世界上的那個時間點。

CurDirection = (transform.position-ParentOrb.position); 
CurDirection.Normalize(); 

motor.movement.velocity = (CurDirection); 
CurPos = transform.position; 

////

也嘗試了讓從grappleobject給玩家的角度。

///

otherDirection =空間速度方向。
OtherDirectionPre =空間中的當前位置。

Vector3 targetDir = otherDirection; 
Vector3 forward = otherDirectionPre; 

angle = Vector3.Angle(targetDir, forward); 

/// 我想這些可能沒有幫助,但更好地展示在我迄今得到。

回答

1

我想你知道生命點和中心之間的半徑,我們稱之爲r。與該玩家的速度v和軸線的角速度ω(=ω-)播放器應連接到你有矢量方程式:

V =ω×R

假設所有3個載體是垂直彼此有ω= v/r。

編輯:您從中心的位置和你的碰撞的接觸點獲得的半徑r:

Vector3 r = collision.contacts[0].point - center; 
float radius = r.magnitude; 
float angularSpeed = rigidbody.veloctiy.magnitude/radius; 
+0

可悲的是,我的數學是相當欠佳,這使得這個幫助過我很難目前瞭解。在我的學校時代,我從來沒有回到過弧度。我在不久之前就開始使用Unity3D,所以仍然深入研究它,所以大部分都是新手。 –

+1

@OzzyanKristiansson我添加了一些代碼 – Kay

+0

我敢肯定,Radius會幫忙,但我不知道如何。爲了讓你瞭解我有多遠,我將給出兩個當前的原型腳本。這是非常早期的工作,介意你。當我說我是3D World思維的新手時,我沒有小孩,之前大部分都是2D。這些是腳本。 http://www.vdxretrotainment.eu/CurrentScripts.zip我目前還有其他一些問題,但最主要的是Grapple,它的優先級是固定的。我的數學也沒有小孩。 >< –