高级设置

文:youyou

Box2D 提供了非常多的参数来改变物理运行状态,除了 RigidBodyColliderJointWorld 之外,还有一些属于 Box2D 内部宏的参数。这些宏的参数可以在 box2d.js(web 平台) / Box2D/Common/b2Settings.h(native 平台) 文件开头找到。

每个物理游戏需要的参数都可能是不同的,不同的情况会需要不同的参数配置。下面会介绍一些宏参数,在某些情况下调整这些宏参数能得到更好的物理模拟效果。

案例

  • b2_velocityThreshold (默认为 1.0f

弹性碰撞的速度阈值。当碰撞发生时如果相对速度小于速度阈值,那这次的碰撞会被认为是非弹性碰撞。

案例 1:当给物理世界设置了一个很大的重力,或者将刚体的 gravity scale 设置的很大,当刚体降落到一个平台上时,可能会由于速度一直大于这个阈值而造成刚体一直抖动而无法停止的情况。
解决方法:将 b2_velocityThreshold 阈值提高。

案例 2:像桌球游戏这种类型的游戏可能会出现这样的情况,当一个小球碰到并停靠在桌子的边缘,这个小球就再也离不开边缘了。
解决方法:将 b2_velocityThreshold 阈值降低。