我正在尝试在 Unity3D 中模拟一艘船。我需要它能够做的就是像一艘真正的船在水中碰到什么东西时会摇晃。我的船已经相撞了,它的所有轴都解锁了。然而,这意味着船会旋转,然后继续以奇怪的角度行驶(比如面向天空)。
有没有办法让船尝试返回其原始旋转,而不是捕捉到确切的值,而只是简单地来回“摇摆”,然后减速以最终再次停在正确的旋转处?
这是我尝试使用的代码:
void FixedUpdate ()
{
wobble();
}
void wobble()
{
if (this.transform.eulerAngles.x < 270)
{
this.rigidbody.AddTorque((float)19, (float)0, (float)0, ForceMode.Force);
}
else if (this.transform.eulerAngles.x > 270)
{
this.rigidbody.AddTorque((float)-19, (float)0, (float)0, ForceMode.Force);
}
else{}
if (this.transform.eulerAngles.z < 0)
{
this.rigidbody.AddTorque((float)19, (float)0, (float)0, ForceMode.Force);
}
else if (this.transform.eulerAngles.z > 0)
{
this.rigidbody.AddTorque((float)-19, (float)0, (float)0, ForceMode.Force);
}
else{}
}
然而,现在当我的物体撞到什么东西时,它就开始失控了。有任何想法吗?