0

我不是一个大用户,但发现 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”

那么在这个(工作)案例中存储的字段在哪里。

4

1 回答 1

0

Michael Mahn 帮我解决了这个问题。

我发布的代码示例在将恢复原状归于身体方面是不正确的。我想我是从另一个在线发布的示例中选择的,它已经工作了几年,为什么在我不知道之前它没有引起错误。也许后来的更新现在导致错误被标记。

于 2018-12-10T18:14:07.690 回答