我正在使用 Unity3d 和 Monodevelop(c#) 制作游戏。当我的弹珠(球体)停止时,我试图检测事件。我的大理石正在使用 Rigidbody.Addforce() 方法移动。有什么办法可以找到吗??
问问题
2417 次
2 回答
1
rigidbody.velocity.magnitude
将为您提供物体行驶的速度。它是速度矢量的大小。使用它,您可以检查对象的速度何时达到零:
if(rigidbody.velocity.magnitude == 0.0f) {
Debug.Log("object has stopped.");
}
然而,根据我的经验,物体的速度将永远达到零。它会继续非常非常非常非常缓慢地移动。相反,除非你有很强的摩擦力,否则它的速度矢量的大小永远不会完全为零。
为了弥补这一点,请找出物体“基本停止”的良好速度。例如,如果速度低于 0.0001,它可能已经“停止”了,因为它不会移动太多。您必须进行试验以确定该值应该是什么:
float stopThreshold=0.001f;
if(rigidbody.velocity.magnitude <= stopThreshold) {
Debug.Log("object has mostly stopped.");
}
但概念保持不变:用于rigidbody.velocity.magnitude
确定对象的速度。
于 2014-09-11T13:21:17.843 回答
0
如果小于您的阈值 w/ci 认为更好 < 0.1f,您可以检查对象刚体速度或角速度;
if(rigidbody.velocity.sqrMagnitude < .01 || rigidbody.angularVelocity.sqrMagnitude < .01) { Debug.Log ( "OBJECT STOPPED "); }
于 2014-09-12T02:07:06.423 回答