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