我有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/