我用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);
他們將開始相撞。你能解釋一下這裏發生了什麼?
我想模擬宇宙,所以在我的遊戲中沒有重力。我試圖通過改變它的位置來控制玩家的船。無論如何,當我按照你的建議使用武力時,他們確實相互衝突!所以在Box2D中,我必須始終使用力量或衝動,而不是直接設置身體的位置,對吧? – wanting252 2013-04-30 08:35:30
@ wanting252是的,確保你施加力量,不要直接修改身體的位置。如果你這樣做,沒有速度等等,歸因於身體在碰撞中使用。基本上要創造一個現實的反應,你需要逼真的運動。實際生活中的物體在移動時不會突然傳送到新的x和y座標。 – Marty 2013-04-30 09:26:13