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

Ed *_*rty 5 physics 2d box2d

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

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

每个球具有以下属性:

friction: 0.3
restitution: 0.3
density: 58.474822 (kg/m^2)
radius: 0.028575 (m)
Run Code Online (Sandbox Code Playgroud)

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

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

Sta*_*n E 6

Box2D设计为最佳工作,长度单位在0.1到10之间(如果你愿意,则为米),越超越这个范围,就越容易受到数值误差的影响.

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

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