0

我知道这听起来很简单。我在通过更新方法以一种方法访问 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)
        }
    }
}

}

如何访问另一种方法中的 userdata 属性(spriteData)。请帮忙

4

1 回答 1

0

我建议您声明一个数据结构MyUserData(使用您认为合适的任何名称)。它将包含两件事:

  1. 指向实际用户数据对象的指针
  2. 身份证号

使用这个结构来存储你身体的用户数据并使用 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 回答