2014-09-11 63 views

回答

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,以确定您的物体的速度。

+0

我想破坏我的对象时,它是stopped.But当我使用rigidbody.velocity.magnitude,量值开始从0.so我的对象只是在强制启动:([RNU(HTTP破坏增加://variyasoftsolutions.com/unity3d.html) – 2014-09-12 10:56:43

+0

嗯,你只需要确保你只有在物体处于运动状态时才开始检查。 – SirBraneDamuj 2014-09-12 13:51:21

+0

我解决了!我从零开始检查幅度[Rnu ](http://variyasoftsolutions.com/unity3d.html) – 2014-09-13 11:57:20

0

如果低于阈值w/c我认为更好< 0.1f;您可以检查物体刚体速度或角速度;

if(rigidbody.velocity.sqrMagnitude < .01 || rigidbody.angularVelocity.sqrMagnitude < .01) { Debug.Log ("OBJECT STOPPED "); } 
相关问题