2015-10-13 77 views
-1

我想讓玩家在釋放箭頭按鈕時立即停止移動,但由於rigidBody2D.addForce的效果,它會繼續滑動一點點。 這裏是我的代碼:AddForce in unity

void Update() { 
    forceX = 0f; 

    var absVelX = Mathf.Abs (GetComponent<Rigidbody2D>().velocity.x); 
    var absVelY = Mathf.Abs (GetComponent<Rigidbody2D>().velocity.y); 
    if (controller.moving.x != 0) { 

     if (absVelX < maxVelocity.x) { 
      forceX = speed * controller.moving.x; 
      transform.localScale = new Vector3 (forceX > 0 ? 1 : -1, 1, 1); 
      animator.SetInteger ("Controller", 1); 

     }else if (controller.moving.x == 0) { 
     } 


    } else { 
     animator.SetInteger ("Controller", 0); 
    } 

    GetComponent<Rigidbody2D>().AddForce(new Vector2 (forceX, 0)); 

} 

謝謝你提前。

回答

1

當您將力量添加到剛體時,物理引擎會增加其速度。在每次物理更新中,物理引擎會根據碰撞,摩擦等來修改此速度,然後根據新速度計算新位置。如果你想立即停止移動剛體,你必須設置速度爲零:

GetComponent<Rigidbody2d>().velocity = Vector2.zero; 
+0

它的作品非常感謝你,我需要在下一次專注於邏輯。 – BrainEnergy