我想以这样一种方式创建一个联系人监听器,当来自不同类的精灵相遇时,我将能够创建一个关节。我找到了一个有用的问题和答案,它对我有所帮助——在 Box2D 中部分获取世界上的contactListener 。推荐以下代码和说明:
std::vector< std::pair<b2Fixture*, b2Fixture*> > thingsThatTouched;
//in BeginContact
thingsThatTouched.push_back( make_pair(contact->GetFixtureA(), contact->GetFixtureB()) );
//after the time step
for (int i = 0; i < thingsThatTouched.size(); i++) {
b2Fixture* fixtureA = thingsThatTouched[i].first;
b2Fixture* fixtureB = thingsThatTouched[i].second;
// ... do something clever ...
}
thingsThatTouched.clear(); //important!!
为此,您需要使 thingsThatTouched 列表在联系侦听器函数中可见,因此它可以是全局变量,也可以在联系侦听器类中设置指向它的指针,或者可能有一个全局函数返回一个指向列表的指针。
我正在使用 Cocos2d 并且不太了解 C++。如何在 Cocos2d中“使 thingsThatTouched 列表在联系人监听器函数中可见”?应该
std::vector< std::pair<b2Fixture*, b2Fixture*> > thingsThatTouched;
在 ContactListener.h 文件中?在 Cocos2d 中会有什么不同?谢谢。