2

我一直在研究如何让一个物体像另一个物体上的轨道一样旋转。

if (Spin == true)  
{  
  transform.LookAt(ParentOrb.transform);  
  transform.Rotate(90,0,0);  
  transform.Translate(transform.forward*Time.deltaTime*5,Space.World);   
}

但是,一旦应该围绕另一个对象运行的对象,当它达到 0 的世界 y 值(正下方/正上方)时,它就会开始疯狂地旋转。

我确实将lookat 的第二个参数更改为vector.3.up、transform.up 和vector3.zero。

当我有 vector3.up 时,旋转也是同样的问题。
当我使用 transform.up 时,它开始自转。
当我有vector3.zero时,它确实开始围绕自己旋转,但它与实际的球体无关,而是它自己的轨道。

我希望能够让它在一个完整的周期中绕着 parentorb 运行。

感谢您阅读我的问题。

4

1 回答 1

3

恭喜,您可能刚刚遇到云台锁

Unity3D 框架的光荣之处在于,您的解决方案通常有一个现有的方法。在这种情况下,有Transform.RotateAround

此代码的功能应该更接近您最初的预期:

transform.RotateAround(ParentOrb.transform.position, Vector3.back, 40f * Time.deltaTime);

其中 40f 是每秒的任意预期旋转速度(以度为单位)。

于 2012-12-04T14:30:39.497 回答