为什么Box2D机身不会碰撞?

时间:2013-04-30 03:46:18

标签: actionscript-3 box2d

我使用Box2D进行了一些测试并坚持使用它。 这是我的身体构造代码:

        var bodyDef:b2BodyDef = new b2BodyDef();
        bodyDef.type = b2Body.b2_dynamicBody;
        bodyDef.fixedRotation = true;
        var center:Number = Consts.stageToB2(Consts.worldSize / 2);
        bodyDef.position.Set(center, center);
        var body:b2Body = physicWorld.CreateBody(bodyDef);

        var shape:b2CircleShape = new b2CircleShape(Consts.stageToB2(w) * 0.5); // our monster is in circle shape.
        var fixtureDef:b2FixtureDef = new b2FixtureDef();
        fixtureDef.shape = shape;

        body.CreateFixture(fixtureDef);

我创造了这两个身体,但它们没有碰撞! debugDraw也不会点亮主体。但是当我为其中一个添加角度速度时:

  

body.SetAngularVelocity(Math.PI / 89);

他们会开始碰撞。你能解释一下这里发生了什么吗?

2 个答案:

答案 0 :(得分:2)

我有一种感觉,Box2D不会检查没有施加任何力的物体之间的碰撞。这似乎是合乎逻辑的,因为如果他们没有做任何事情,为什么引擎会浪费资源来检查这些对象。

如果您将物体放在彼此顶部,然后期望在没有重力设置或对箱子施加任何力的情况下发生某些事情,那可能就是原因。

答案 1 :(得分:1)

引力怎么样?如果他们根本没有移动,即使没有摔倒,看起来你的世界也没有引力......

private var gravity:b2Vec2 = new b2Vec2(0, 9.8);
...
private var your_world:b2World = new b2World(gravity, true)