我不是一个大用户,但发现 BOX2D 为创建逼真的 LED 灯效果奠定了基础。迭代时间不是一个大问题,因为我并没有试图实现场景真实感。一段时间以来,我运行了一个程序来生成喷泉效果。它在Python2.7.12,Ubuntu下运行,但我不知道Box2D的版本。
现在我想在 RaspberryPi 上运行相同的程序,理想情况下是在 Python3 下但目前在 Python2.7.12 下。
代码在定义“恢复”时失败:
body = world.CreateStaticBody(
position=(0, 10),
allowSleep=False,
restitution=0.7,
shapeFixture=Box2D.b2FixtureDef(density=20.0),
userData=time.time(),
shapes=[
Box2D.b2PolygonShape(box=(14, 0.1, (0,-7), 0)),
Box2D.b2PolygonShape(box=(14, 0.1, (0,7), 0)),
Box2D.b2PolygonShape(box=(0.1, 7, (0,0), 0)),
Box2D.b2PolygonShape(box=(0.1, 7, (14,0), 0)),
# Box2D.b2CircleShape(pos=(7,0),radius=0.5),
]
)
错误是废话,废话...
File "/home/pi/.local/lib/python2.7/site-packages/Box2D/Box2D.py", line 152, in _init_kwargs
raise AttributeError('Invalid keyword argument "%s" for %s' % (key, cls))
AttributeError: Invalid keyword argument "restitution" for <class 'Box2D.Box2D.b2BodyDef'>
当然,代码稍后也可能会失败,但是当我注释掉有问题的语句时,它似乎可以一直运行到完成。
我的问题是如何诊断问题?
PS。Ubuntu上的原始安装工作正常,但是当我进入Python shell“body.restitution”时,我得到了回报:
AttributeError:“b2Body”对象没有属性“restitution”
那么在这个(工作)案例中存储的字段在哪里。