異なるクラスのスプライトが出会ったときにジョイントを作成できるように、コンタクトリスナーを作成したいと思います。私は私を助けてくれた有用な質問と答えを見つけました-部分的に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ではどのように違いますか?ありがとう。