帮我解决一些示例代码,以获取iPhone中Box2d中精灵的位置。
答案 0 :(得分:0)
要从box2d bodyDef获取精灵的位置,首先要将精灵保存在bodyDef的userData属性中。
例如,在物理环境中创建球的工厂方法中:
//create the body
b2BodyDef initBodyDef;
initBodyDef.type = b2_dynamicBody;
initBodyDef.position.Set(p.x/PTM_RATIO, p.y/PTM_RATIO);
//Save the sprite in the userData property of the bodyDef, to access later
initBodyDef.userData = ballSprite;
b2Body *body = world->CreateBody(&initBodyDef);
//Rest of the factory method ............ (i.e. create shape, create fixture)
然后当你想访问精灵的位置时,例如在进行碰撞检测时,你会得到指向bodyDef的userData属性中的精灵的指针:
这将是tick方法(发生碰撞检测),或者你需要获得精灵的位置。
CCSprite *mySprite = (CCSprite *) bodyDef->GetUserData();
CGPoint spritePosition = mySprite.position;
在上面的第一行代码中,我们创建了一个sprite对象,并在bodyDef上调用GetUserData方法,该方法返回我们之前保存的sprite。注意我们必须转换返回的userData,否则它将返回错误。一旦我们保存了精灵,我们所要做的就是调用mySprite指针上的position属性。多数民众赞成。