2014-09-11 62 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 "); } 
相關問題