Box2D物理引擎,弹性系数为0,依旧会有反弹。

Box2D物理引擎,所有刚体的弹性系数都为0,但是因为重力下落依旧会有反弹。

具体表现是 最底下放置一个静态刚体,上面放多个动态刚体堆叠,且完全静止后。
消除底部一些动态刚体,让所有动态刚体自由下落,下落到最底部后,所有刚体会有非常明显的反弹。
并且越靠上的刚体反弹越明显。

我不需要反弹,这个有办法处理吗?

补充:
3.8.3版本Demo:TestDemo.zip (12.7 KB)
效果图:

什么场景?

呃,这和场景有关吗? 就是一个基础的消除小游戏,用的是刚体,堆叠,消除下面的,上面的自由下落。
我只是不想要反弹效果。

刚体啥形状,地面是平的吗?

cc.BoxCollider2D 只有正方形和长方形 所有刚体都是禁止旋转的。

简单处理是加监听,碰到地面后把物理系数全部重置,或者关掉刚体,大概率你不想要这个效果,我想复现一下

我复现下试试

有没有“隐藏”的边缘盒子/包装盒,没有设置参数?
确定是自己的刚体弹回去的?移动地面钢体试试

不会有隐藏的。我只有最底下有一个静态的刚体当地面使用。
其它刚体都是预制体,用代码添加的。我没有对刚体做任何操作,只有消除后自由下落。

简单测试了一下,让一个物体自动下落是没有反弹的。是不是 “上面放多个动态刚体堆叠” 这个导致的影响呢 :astonished:

:thinking: 我看你上面还说其它刚体是预制体,代码添加的。感觉creator的碰撞体钢铁组件代码控制都有点问题,试试预制体加载出来后,再手动弹性设置为0,apply() 一下?

是不是我发的gif的情况?

就是这种情况。
而且你这只有1个刚体下落,如果是同时多个堆叠在一起的刚体下落,越上面的反弹越明显。

你看下楼下的,确实是有反弹。


堆叠的越多,越上面的反弹越明显。

3.8.3版本Demo:TestDemo.zip (12.7 KB)

是的, 我刚刚用多个对象测试后也发现了这个问题 :astonished:
我去翻了下文档,官方对 Restitution 的解释是 “碰撞组件的弹性系数,指明碰撞组件碰撞时是否会受到弹力影响”

是不是因为你多个动态刚体的碰撞后产生的力不属于“弹力”的范围内了 :thinking:

只能这么解释了,但是这个想象不是我想要的。 :joy:

好像没办法避免这个反弹了。

:lying_face: 能想到的凑合办法是,在有碰撞监听的时候,把线速度设为0了

把密度设置的很小很小试试