Box2D是否已删除“归还”?

时间:2018-12-07 18:37:02

标签: box2d restitution

我不是一个大用户,但是找到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'

在这种情况下,字段存储在哪里?

1 个答案:

答案 0 :(得分:0)

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

我发布的代码示例在归还尸体方面是不正确的。我想我是从另一个在线发布的示例中挑选出该示例的,它已经工作了很多年,为什么在我不知道的情况下它没有引起错误。也许后来的更新已导致错误被标记。