【问题标题】:Unity - make a ball stop bouncing / don't snap to the bottomUnity - 让球停止弹跳/不要弹到底部
【发布时间】:2016-07-24 13:25:04
【问题描述】:

目前我正在尝试在 Unity 中创建一个栩栩如生的乒乓球。

到目前为止,没问题。我分配了一个刚体和一个球体对撞机。球体对撞机有一个材质,我将其弹性设置为 0.85(显然大约是乒乓球在标准实心地板上的值)。

到目前为止,球弹得很好,但是当它即将停止时,问题就出现了。

最初,球会弹得越来越低/越来越快,直到它最终“啪”地一声落地(错过了人们期望看到的最后几次反弹)。

我读到这是因为物理设置中的“反弹阈值”。我认为默认值是 2.0,所以我将其更改为 0.6。

现在球不会被弹到地上,而是不会从最后一个小高度停止弹跳。

您可能可以从这张图片中参考,球不断弹跳的高度(球的比例应该非常精确到 Unitys 公制比例系统)

我真的不明白为什么会这样,因为弹性已经设置为 0.85,不应该每次反弹降低 15% 的高度吗?

附加信息:我已经尝试了一些东西,也给地板一个物理材质,将弹性设置为 0,调整摩擦参数等,但似乎对此没有任何影响。

我怎样才能完成逼真的球最后反弹,让它更自然地休息?

任何帮助将不胜感激。

提前致谢并致以最诚挚的问候,

LilaQ

【问题讨论】:

  • 您是否调整了您的接触偏移量?默认接触偏移:指定碰撞检测系统用于生成碰撞接触的距离。该值必须为正数,如果设置得太接近零会导致抖动。默认值:0.01。只有距离小于其接触偏移值之和的碰撞器才会生成碰撞接触。
  • 哦,很好。我确实做到了。我只是将物理设置(包括接触偏移重新设置为 0.1),并将反弹阈值再次设置为 0.6(以上任何设置都会使它们从您在最后一张图片中看到的高度捕捉到地面,这看起来很奇怪)。但是,球不会停下来,仍然在相同的高度弹跳:/
  • 有一点需要考虑,gamedev.stackexchange.com 的读者更可能熟悉 Unity3D。你可以试试那里问。
  • 谢谢 Steven Hansen 我不知道 SO 的那部分!

标签: unity3d game-physics unity5


【解决方案1】:

我确实遇到了这个问题,但是降低固定时间步长值并不能解决我的问题,我在刚体组件中将 Drag 值更改为 1 并解决了我的问题。

【讨论】:

    【解决方案2】:

    您可以尝试在 Edit->Project Settings->Time 中降低 Fixed Timestep 的值。这将提高物理模拟的准确性。例如,弹跳阈值为 0.6,固定时间步长 0.005 让我的测试球最终静止。

    【讨论】:

    • 太棒了,这就是诀窍 - 谢谢!为了澄清,我们在这里增加每秒物理计算的步数,以避免像我上面的例子那样物理死胡同?
    • 是的,减少固定时间步长会使每秒的步数增加。
    • 这也对我有用。虽然不知道它如何影响性能
    猜你喜欢
    • 2013-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-19
    相关资源
    最近更新 更多