iphone - Box2d 动态主体粘在静态上

标签 iphone objective-c box2d

有时,当动态体移动并碰撞静态体时,动态卡住并停止。

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/

相关文章:

objective-c - 如何使用quickdialog实现滑动删除

ios - 从 App Delegate 调用 ViewController 方法

iphone - CCLabelBMFont 的顶部和底部有空白空间...如何删除?

iphone - 在图像上显示叠加层

ios - UITabBar 不改变色调 Xcode 9.3

iOS 8 CLLocationManager

java - BodyEditorLoader 中的 float 和 Dictionary 错误,如何修复?

c++ - 访问类实例的属性

cocos2d-iphone - 为什么userdata设置为self?

iphone - AVAudioPlayer 的 playAtTime 属性在 IOS 3.0/App Crash 中不起作用