1

私が見る userData の割り当てのほとんどの例は、次のようになります。

CCSprite *sprite = [CCSprite spriteWithFile:@"whatever.png" rect:CGRectMake(0, 0, screenSize.width, screenSize.height)];

    sprite.tag = kWallTag;
    [self addChild:sprite];

    b2BodyDef groundBodyDef;
    groundBodyDef.position.Set(0,0);
    groundBodyDef.userData = (__bridge void*)sprite;

スプライトを使用している場合は問題ありません。しかし、私の場合は、画面の端との衝突をテストしたいだけなので、スプライトを作成したくありません。境界だけで画面サイズのスプライトを作成することはできますが、壁を検出するためだけにテクスチャ メモリをあまり使用したくありません。したがって、私の質問は、スプライトを割り当てずに、kWallTag を groundBodyDef に割り当てる方法です。タグの値を取得するにはどうすればよいでしょうか。

4

1 に答える 1

0

私は最初の部分に答えました:

GenericUserData *usrData = (GenericUserData*)malloc(sizeof(GenericUserData));
usrData->tag = kWallTag;
groundBodyDef.userData = usrData;

しかし、一般的なデータをテストする方法がわかりません:

if (bodyA->GetUserData() != NULL && bodyB->GetUserData() != NULL) {
    CCSprite *spriteA = (__bridge CCSprite *) bodyA->GetUserData();
    CCSprite *spriteB = (__bridge CCSprite *) bodyB->GetUserData();

CCSprite であると仮定するのではなく、一般的なユーザー データをテストするにはどうすればよいですか?

于 2013-03-06T01:21:44.087 に答える