1
我在Box2d世界有很多身體(B2Body)。我想區分這個機構。我想分辨b2Body
比如我有
b2Body *ball;
b2Body *person1;
b2Body *person2;
b2Body *Person3;
,我想打的球的人?
這b2body有ID,名或其他東西的區別?
我在Box2d世界有很多身體(B2Body)。我想區分這個機構。我想分辨b2Body
比如我有
b2Body *ball;
b2Body *person1;
b2Body *person2;
b2Body *Person3;
,我想打的球的人?
這b2body有ID,名或其他東西的區別?
您可以只使用==
運營商,例如:
void ContactListener::PostSolve(b2Contact* contact, b2ContactImpulse* impulse) {
b2Body *bodyA = contact->GetFixtureA()->GetBody();
b2Body *bodyB = contact->GetFixtureB()->GetBody();
if ((bodyA == ball && bodyB == person1) || (bodyB == ball && bodyA == person1)) {
// do something
}
}
或者你也可以利用b2Body
用戶數據(但你需要確保所有機構都分配相同類的用戶數據:
void ContactListener::PostSolve(b2Contact* contact, b2ContactImpulse* impulse) {
BodyUserData *bodyA_data = (BodyUserData *)contact->GetFixtureA()->GetBody()->GetUserData();
BodyUserData *bodyB_data = (BodyUserData *)contact->GetFixtureB()->GetBody()->GetUserData();
if ((bodyA_data.type == TYPE_BALL && bodyB_data == TYPE_PERSON1) || (bodyB_data.type == TYPE_BALL && bodyA_data == TYPE_PERSON1)) {
// do something
}
}
謝謝@Lukman它是正確的我在我的代碼
在代碼里加入 - 。>>>>>
- (void)beginContact:(b2Contact *)contact {
b2Body *bodyB = contact->GetFixtureB()->GetBody();
b2Body *bodyB = contact->GetFixtureB()->GetBody();
if ((bodyA == ball && bodyB == person1) || (bodyB == ball && bodyA == person1))
{
// do something
[[SimpleAudioEngine sharedEngine] playEffect:@"whine.wav"];
}
}