Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 我想把你的身体区分开来_Objective C_Cocos2d Iphone_Objective C++_Game Physics_Box2d Iphone - Fatal编程技术网

Objective c 我想把你的身体区分开来

Objective c 我想把你的身体区分开来,objective-c,cocos2d-iphone,objective-c++,game-physics,box2d-iphone,Objective C,Cocos2d Iphone,Objective C++,Game Physics,Box2d Iphone,我在Box2d(B2Body)的世界上有很多尸体。我想把这些身体区分开来 比如我有 b2Body *ball; b2Body *person1; b2Body *person2; b2Body *Person3; 我想打哪个人的球 这个b2body有id,名称或其他区别的东西吗 您可以只使用=运算符,例如: void ContactListener::PostSolve(b2Contact* contact, b2ContactImpulse* impulse) { b2Body *b

我在Box2d(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
用户数据(但您需要确保为所有body分配了相同类别的用户数据:

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"];


    }
}