我正在使用Unity3d与Monodevelop(c#)进行游戏。 当我的大理石(球体)停止时,我试图检测事件。 我的大理石正在使用Rigidbody.Addforce()方法移动。 有什么方法可以找到方法吗?
答案 0 :(得分:1)
rigidbody.velocity.magnitude
会为您提供物品行进的速度。它是速度矢量的大小。使用它,您可以检查对象的速度何时达到零:
if(rigidbody.velocity.magnitude == 0.0f) {
Debug.Log("object has stopped.");
}
然而,根据我的经验,物体的速度将永远达到零。它会非常非常非常缓慢地移动。相反,除非你有强烈的摩擦力,否则它的速度矢量幅度永远不会达到零。
为了弥补这一点,找出一个好的速度,对象已经基本停止"。例如,如果速度低于0.0001,它可能已经停止了#34;从某种意义上讲,它不会发生更多变化。您必须尝试确定该值应该是什么:
float stopThreshold=0.001f;
if(rigidbody.velocity.magnitude <= stopThreshold) {
Debug.Log("object has mostly stopped.");
}
但概念保持不变:使用rigidbody.velocity.magnitude
来确定对象的速度。
答案 1 :(得分:0)
你可以检查物体刚体速度或角速度,如果小于你的阈值w / c我认为更好&lt; 0.1F;
if(rigidbody.velocity.sqrMagnitude < .01 || rigidbody.angularVelocity.sqrMagnitude < .01) { Debug.Log ( "OBJECT STOPPED "); }