我正在尝试为我的box2d体实施焊接接头:
for(pos = _contactListener->_contacts.begin();
pos != _contactListener->_contacts.end(); ++pos) {
MyContact contact = *pos;
b2Body *bodyA = contact.fixtureA->GetBody();
b2Body *bodyB = contact.fixtureB->GetBody();
b2Vec2 worldCoordsAnchorPoint = bodyA->GetWorldPoint (b2Vec2(0,0));
b2WeldJointDef weldJointDef;
weldJointDef.bodyA = bodyA;
weldJointDef.bodyB = bodyB;
weldJointDef.localAnchorA = weldJointDef.bodyA->GetLocalPoint(worldCoordsAnchorPoint);
weldJointDef.localAnchorB = weldJointDef.bodyB->GetLocalPoint(worldCoordsAnchorPoint);
weldJointDef.referenceAngle = weldJointDef.bodyB->GetAngle() - weldJointDef.bodyA->GetAngle();
weldJointDef.collideConnected = true;
weldJointDef.userData = @"tile";
weldJointDef.Initialize(bodyA, bodyB, worldCoordsAnchorPoint);
world->CreateJoint(&weldJointDef);
//}
}
但是我的fps非常低。我认为是因为我没有检查是否有焊接的物体。 如何检查车身是否焊接? 感谢。
答案 0 :(得分:0)
根据您的代码,我假设您尝试使用焊接接头连接所有接触的对象。由于这些物体是接触的,因此当您将它们焊接在一起时,它们可能会发生重叠或碰撞。但是,您设置collideConnected = true。这意味着如果它们现在碰撞,它们将保持碰撞,并且由于焊接接头它们不能分开。这应该会产生很多不那么有意义的计算,从而拖累你的fps。