2014-03-31 37 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旋转。我会再测试一下。 –