我不是一个大用户,但是找到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'
在这种情况下,字段存储在哪里?
答案 0 :(得分:0)
Michael Mahn帮助我解决了这个问题。
我发布的代码示例在归还尸体方面是不正确的。我想我是从另一个在线发布的示例中挑选出该示例的,它已经工作了很多年,为什么在我不知道的情况下它没有引起错误。也许后来的更新已导致错误被标记。