如何在Box2D制作台球并防止球卡在墙上?

时间:2010-06-02 23:23:44

标签: 2d physics box2d

快速概述:我正在尝试使用Box2D作为基础进行游戏。现在我的问题是:

我应该如何设置台球和边缘以使它们正常运作?球有时似乎没有明显的原因粘在边缘上。我有四个静态墙体对象,在桌子的边缘处有一个恢复原状。

每个球都有以下属性:

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

并且母球的密度为101.356358(kg /平方公尺)

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

1 个答案:

答案 0 :(得分:6)

Box2D设计为最佳,长度单位在0.1到10之间(如果你愿意,则为米),越超越这个范围,它就越容易受到数字不准确的影响。

尝试按比例放大系统,使球的半径为1.0,并相应地缩放其余部分。您可以保持材料属性不变,但需要对冲动进行升级。

当身体速度低于某个阈值时,身体会进入睡眠状态。您可以通过在b2BodyDef结构中将 allowSleep 设置为false来防止这种情况。但请注意,从未进入睡眠状态的身体比使用身体的身体消耗的CPU时间要多得多,因此应谨慎使用。