私は大きなユーザーではありませんが、現実的な LED ライト効果の基礎を作成するための BOX2D を見つけました。シーンのリアリズムを達成しようとしていないので、反復時間は大きな問題ではありません。しばらくの間、噴水効果を生成するプログラムを実行していました。Python2.7.12、Ubuntuで動作しますが、Box2Dのバージョンがわかりません。
今、理想的には Python3 で、現在は Python2.7.12 で RaspberryPi で同じことを実行したいと考えています。
コードは、「restitution」が定義されているポイントで失敗します。
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' がありません
したがって、この(作業中の)ケースで格納されているフィールドはどこですか。