2014-03-31 67 views
0

移動一個3D剛體到其走向,我有以下場景:在Unity3d

enter image description here

我想機器人移動到每個面對的方向,所以我嘗試:

rigidbody.AddForce(rigidbody.transform.TransformDirection(Vector3.up* speed)); 

機器人像跳躍一樣向上移動。

我想:

rigidbody.AddForce(rigidbody.transform.TransformDirection(Vector3.forward* speed)); 

但機器人跌倒

enter image description here

任何想法,我怎麼能解決這個問題?

+0

他有他什麼樣的對撞機? – SirBraneDamuj

+0

剛體可能是由於下降與地板摩擦的領先地位。只是一個提示,如果你訪問transform.forward可以簡化代碼,因爲它已經包含在世界空間COORDS向前向量。 – Heisenbug

+0

@SirBraneDamuj我用一個盒子撞機從他的腳頭。 –

回答

0

他是最有可能倒下,因爲他是在下降,由於物理。

你可以給他的剛體轉動約束凍結在X軸和Z軸旋轉了 - 所以他仍然可以又將面臨一個方向,但他不能摔倒。使用你的「轉發」代碼來移動他。

這些約束也可以從代碼訪問,所以你可以例如將其關閉,如果他被殺死了,所以他倒了:

rigidbody.constraints = RigidbodyConstraints.None; 
+0

我想我設法使它凍結x和z旋轉。我會再測試一下。 –