Box2D "реституция" была удалена? - PullRequest
0 голосов
/ 07 декабря 2018

Я не большой пользователь, но нахожу BOX2D для создания основы для реалистичных эффектов светодиодного освещения.Время итерации не является большой проблемой, потому что я не пытаюсь достичь реалистичности сцены.Некоторое время у меня была запущена программа для генерации эффекта фонтана.Он работает под 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 "body.restitution", я получаю возврат:

AttributeError: у объекта 'b2Body' нет атрибута 'restitution'

Итак, где хранится поле в этом (рабочем) случае.

1 Ответ

0 голосов
/ 10 декабря 2018

Майкл Махн помог мне решить эту проблему.

Пример кода, который я разместил, был неверным, приписывая реституцию телу.Я думаю, что взял этот пример из другого примера, размещенного в Интернете, и он работает уже несколько лет, поэтому он не вызвал ошибку, пока я не знаю.Возможно, последнее обновление вызвало пометку ошибки.

...