如何知道对象被停止。对象被刚体逼迫

时间:2014-09-11 11:43:35

标签: unity3d rigid-bodies

我正在使用Unity3d与Monodevelop(c#)进行游戏。 当我的大理石(球体)停止时,我试图检测事件。 我的大理石正在使用Rigidbody.Addforce()方法移动。 有什么方法可以找到方法吗?

2 个答案:

答案 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 ");  }