我知道这听起来很简单。我通过更新方法在一种方法中访问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)。请帮忙
答案 0 :(得分:0)
我建议您声明一个数据结构MyUserData
(使用您认为合适的名称)。它将包含两件事:
使用此结构存储您身体的用户数据,并使用该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)
}
}