0

我用 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);

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

4

2 回答 2

2

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

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

于 2013-04-30T06:57:09.427 回答
1

重力呢?如果它们根本不动,甚至不坠落,就好像你的世界没有重力一样。

private var gravity:b2Vec2 = new b2Vec2(0, 9.8);
...
private var your_world:b2World = new b2World(gravity, true)
于 2013-04-30T06:53:57.943 回答