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{}
}
しかし、オブジェクトが何かにぶつかると、制御不能にスピンし始めます。何か案は?