5

作为一个快速概述:我正在尝试使用 Box2D 作为基础制作台球游戏。现在我的问题:

我应该如何设置台球和边缘以使其正常工作?这些球有时似乎无缘无故地粘在边缘。我有四个静态墙对象,在桌子边缘周围恢复为 1。

每个球具有以下属性:

friction: 0.3
restitution: 0.3
density: 58.474822 (kg/m^2)
radius: 0.028575 (m)

母球的密度为 101.356358 (kg/m^2)

当对 1.2 kg-m/s 的球杆施加脉冲时,球似乎以正常的池球速度移动,并且大部分正确地从墙壁反弹。然而,有时当一个球撞到墙上时,它根本不会反弹,它只是停下来,或者只是继续沿着墙壁移动。这看起来很奇怪,而且似乎不正确。有没有更好的方法来设置它?

4

1 回答 1

6

Box2D 的设计最适用于 0.1 到 10 之间的长度单位(如果您愿意,可以使用米),您越是超出此范围,它就越容易受到数字不准确的影响。

尝试放大您的系统,使球的半径为 1.0,并相应地缩放其余部分。您可以保持材料属性不变,但需要放大脉冲。

粘连也可能是由于身体在速度低于某个阈值时进入睡眠状态。您可以通过在 b2BodyDef 结构中将 allowSleep 设置为 false防止这种情况。但请注意,从不进入睡眠状态的主体比正常睡眠的主体消耗更多的 CPU 时间,因此应谨慎使用。

于 2010-06-29T10:30:11.433 回答