有时,当动态体移动并碰撞静态体时,动态卡住并停止。
http://imageshack.us/photo/my-images/14/screenfgz.png/ (顶部和底部的线是传感器,中心形状是主体)
用于移动使用的 mouseJoint->SetTarget(pos);
设置: 世界
b2Vec2 gravity = b2Vec2(0.f, 0.f);
bool doSleep = true;
world = new b2World(gravity, doSleep);
world->SetContinuousPhysics(false); // when using true, dynamic tunneling through other bodies
动态 body
...
density = 1.f;
friction = 0.f;
restitution = 0.f;
...
body->SetBullet(true);
body->SetFixedRotation(true);
鼠标关节
b2Vec2 locationWorld = b2Vec2(pos.x/PTM_RATIO,pos.y/PTM_RATIO);
b2MouseJointDef md;
md.bodyA = groundBody;
md.bodyB = body;
md.target = body->GetPosition();
md.collideConnected = true;
md.maxForce = 1000 * body->GetMass();
md.dampingRatio = 0.1f;
md.frequencyHz = 2.f;
mouseJoint = (b2MouseJoint *)world->CreateJoint(&md);
动态和静态物体都是矩形。旋转 = 0。
如何消除卡住?
最佳答案
如果您看到动态框被卡在静态主体的图 block 上(如屏幕截图所示),则这是目前 Box2D 中的一个已知问题。您可以通过对静态主体使用一个大多边形或循环形状来改进它,或者简单地将动态主体的角倾斜,使它们不是完美的正方形。
关于iphone - Box2d 动态主体粘在静态上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6648172/