在Unity中添加力量后,如何使球停止继续滚动



所以我的问题是球员(球(在从左或右添加力后继续滚动。如何使它在到达点时停止而不继续滚动?

if (Input.GetKey("d"))
{                                   
rb.AddForce(0, 0, -sideWaysForce * Time.deltaTime, ForceMode.VelocityChange);
}
if (Input.GetKey("a"))
{  
rb.AddForce(0, 0, sideWaysForce * Time.deltaTime, ForceMode.VelocityChange);
}

现在,在添加力之后,球继续滚动x次(取决于添加到球员的力的大小(

当需要立即停止时,可以将isKinetic设置为true。例如,如果你想让球在球员停止按D键时立即停止,你可以这样做:

if (Input.GetKeyUp(KeyCode.D)) {
rb.isKinematic = true;
}

这样做将有效地从物理计算中删除刚体,因此您需要确保在您想再次将其用作物理对象之前/之后(即,在您尝试对其调用AddForce或在碰撞中使用它之前(设置rb.isKinematic = false

有关更多信息,请参阅isKinetic上的Unity文档。

还有其他方法可以做到这一点,例如对刚体的当前速度施加相反的力,或者操纵角阻力或修改表面摩擦。最合适的方法取决于你如何设想";停止";球。

将刚体速度和角速度设置为零

示例

rb.velocity = Vector3.zero;
rb.angularVelocity = Vector3.zero;

最新更新