统一的AddForce

时间:2015-10-13 17:04:52

标签: c# unity3d

我希望玩家在我释放箭头按钮时立即停止移动,但由于rigidBody2D.addForce的影响,它会继续滑动一点。 这是我的代码:

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 个答案:

答案 0 :(得分:1)

当您向Rigidbody添加力时,物理引擎会增加其速度。在每次物理更新中,物理引擎根据碰撞,摩擦等修改此速度,然后根据新的速度计算新位置。如果您希望刚体立即停止移动,则必须将速度设置为零:

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