无法使用Unity 3D物理原理反弹球

时间:2019-12-16 10:27:20

标签: unity3d physics

我正在使用大小为1的球。该球的RigidBody质量为0.01。当我旋转地面时,球由于重力而移动(我还向球施加了恒定的力y:-1.5)。问题是,球在快速移动时会反弹。我尝试调整物理材质(弹性= 0和不同的摩擦值)。如何防止球弹跳并实现金属球的逼真模拟?)

编辑:我认为我已经发现问题了……地面是由盒子组成的(迷宫是自动生成的),因此它们之间似乎有“凸起”……我已经对其进行了测试使用一个大盒子作为地面,它工作正常。

这是问题所在:https://answers.unity.com/questions/568974/sphere-collider-catching-edges-of-aligned-cubes.html,所以我想我应该只在地面上使用1个对撞机,也许我可以使用此资产来制造空洞:https://assetstore.unity.com/packages/tools/modeling/csg-82197

ball bouncing

4 个答案:

答案 0 :(得分:0)

尝试增加质量,并更改物理材料中的摩擦力并继续对其进行测试,直到获得所需的结果为止。 另一个提示:在“约束”下的“刚体”上,勾选“冻结位置-Y轴”或通常向上的轴,这将阻止球上升,也许会有所帮助

答案 1 :(得分:0)

使用以下属性可以正常工作:

Physics Material Properties enter image description here enter image description here

我认为Constant force on Y不是必需的,或者实际上是造成问题的原因。

答案 2 :(得分:0)

也许不是最有效的方法,但是您可以尝试向下进行射线跟踪并将每帧的球位置设置为击中位置(减去球体半径)。这不是很漂亮,但是如果其他所有方法都失败了,它将解决问题。

答案 3 :(得分:-1)

您始终可以在刚体中使用约束。如果在约束中勾选“冻结Y轴位置/旋转”,则不会发生y移动或弹跳。(取决于您的基本水平面/平面是否设置在xz平面上)。

如果这不是一个选择,那么您可以尝试不断增加质量和重力,同时在上方不断施加恒定的AddForce。

您还可以像其他提到的答案一样添加具有减小的反弹和摩擦的物理材料。