0

これはかなり単純に聞こえるかもしれません。update メソッドを介して 1 つのメソッドで b2Body のユーザーデータにアクセスする際に問題が発生しています。複数の重力を設定するには、update メソッドで userdata プロパティにアクセスする必要があります。私はそれを理解していません。以下、アップデート方法

-(void) update: (ccTime) dt
{
int32 velocityIterations = 8;
int32 positionIterations = 1;
world->Step(dt, velocityIterations, positionIterations);    

for (b2Body* b = world->GetBodyList(); b; b = b->GetNext())
{
    if (b->GetUserData() != NULL) {
        if (b == spriteData) {
            b->ApplyForce( b2Vec2(0.0,9.8*b->GetMass()),b->GetWorldCenter()); // here 0.0 is x, 9.8 is y (the gravity)
        }
    }
}

}

別のメソッドにあるユーザーデータ プロパティ (spriteData) にアクセスするにはどうすればよいですか。助けてください

4

1 に答える 1

0

データ構造を宣言することをお勧めしますMyUserData(適切と思われる名前を使用してください)。2 つのものが含まれます。

  1. 実際のユーザー データ オブジェクトへのポインタ
  2. ID番号

この構造を使用して体のユーザー データを保存し、ID を使用して特定のユーザー データを認識します。

 if (b->GetUserData() != NULL) {
        MyUserData *myUserData = (MyUserData *)b->GetUserData();
        if (myUserData->id == <id for sprites which require other gravity force>) {
            b->ApplyForce( b2Vec2(0.0,9.8*b->GetMass()),b->GetWorldCenter()); // here 0.0 is x, 9.8 is y (the gravity)
        }
    }
于 2012-04-24T12:54:55.363 に答える