【问题标题】:Box2D won't work with PythonBox2D 不适用于 Python
【发布时间】:2011-10-19 15:34:49
【问题描述】:

我已经安装了 Python 2.6.6 和 Box2D 2.0.2b1。并且无法创建 box2d 世界 - b2World()。

简单示例:

import Box2D
Box2D.b2World()

无论我在函数 b2World 中输入什么,我都会收到此错误:

Traceback (most recent call last):
  File "<pyshell#2>", line 1, in <module>
    Box2D.b2World()
  File "C:\Python26\lib\site-packages\Box2D\Box2D.py", line 4350, in __init__
    _Box2D.b2World_swiginit(self,_Box2D.new_b2World(*args))
TypeError: new_b2World expected 3 arguments, got 0

【问题讨论】:

    标签: python box2d traceback


    【解决方案1】:

    尝试类似:

    world = b2World(gravity=(0,-10), doSleep=True)
    

    我查看了 2.0.2 版本,看起来您应该像这样传递参数:

    worldAABB=box2d.b2AABB()
    worldAABB.lowerBound = (-100.0, -100.0)
    worldAABB.upperBound = ( 100.0, 100.0)
    gravity = (0.0, -10.0)
    world = box2d.b2World(worldAABB, gravity, True)
    

    【讨论】:

    • 正如我上面写的,无论将什么代码写入函数,我都会收到错误消息。在你的情况下,我得到:Traceback (most recent call last): File "&lt;pyshell#2&gt;", line 1, in &lt;module&gt; world = Box2D.b2World(gravity=(0,-10), doSleep=True) TypeError: __init__() got an unexpected keyword argument 'doSleep'
    • 你从哪里得到 2.0.2b1?我只找到 2.0.1、2.1.2、2.1.3 和 2.2.X 系列。您尝试升级了吗?
    • 不,我还没有更新它,但我想我应该更新它。 2.0.2b1 可以在这里找到code.google.com/p/pybox2d/downloads/…
    • 它工作正常。非常感谢。但它似乎比其他版本有点复杂。这不是缺点吗?
    猜你喜欢
    • 1970-01-01
    • 2016-04-26
    • 2022-11-26
    • 1970-01-01
    • 2012-02-15
    • 2015-05-28
    • 2017-05-25
    • 2016-07-11
    • 1970-01-01
    相关资源
    最近更新 更多