objective-c - 碰撞后如何恢复b2Body状态?

标签 objective-c ios box2d

我有2个 body 。 碰撞后,第二个物体消失,而第一个物体必须以与碰撞前相同的方式继续移动。 p>

现在的样子:

1) 我检测到 contactListener::BeginContact(..) { };

2) 保存要删除的第二个物体,并保存第一个物体以恢复其速度和角度。

3)

-(void) update: (ccTime) dt {
int32 velocityIterations = 8;
int32 positionIterations = 1;
_world->Step(dt, velocityIterations, positionIterations);
...
world->DestroyBody(secondBody);
firstBody->SetLinearVelocity(linearVelocityBeforeTouching);
firstBody->SetTransform(firstBody->GetPosition(), angleBeforeTouching );
...
}

结果,第一个物体沿相同方向移动,但与碰撞后一样旋转

最佳答案

当两个物体发生碰撞时,可以在碰撞监听器的 PreSolve 中执行 contact->SetEnabled(false) 来取消默认的碰撞响应。

关于objective-c - 碰撞后如何恢复b2Body状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11061598/

相关文章:

objective-c - iOS 4 上的推送通知如何显示?

objective-c - 'expressionValueWithObject' 方法可以将数字解释为 float 而不是整数吗?

iphone - UIWebView shouldStartLoadWithRequest 仅在从内部调用模态视图时触发一次

ios - swift - 如何完成任务

C++ 到 Objective-C,在 for 循环中使用 const int

objective-c - 禁用 WebView 上的右键菜单

ios - 如何将数组写入plist?

android - 碰撞时摧毁 body JBox2D android

c++ - 保持物体在行星表面的正确上升方向

python - 如何将值更改为零但不在循环的第一次迭代中