我在这里使用 Ray Wenderlich 的代码:http ://www.raywenderlich.com/606/how-to-use-box2d-for-just-collision-detection-with-cocos2d-iphone
这是我用来将 b2Body/Def/Fixture 添加到我的 CCSprite 的代码:
- (void)addBoxBodyForSprite:(CCSprite *)sprite {
b2BodyDef spriteBodyDef;
spriteBodyDef.type = b2_dynamicBody;
spriteBodyDef.position.Set(sprite.position.x/CTM_RATIO, sprite.position.y/CTM_RATIO);
spriteBodyDef.userData = sprite;
b2Body *spriteBody = world->CreateBody(&spriteBodyDef);
b2PolygonShape spriteShape;
spriteShape.SetAsBox(sprite.contentSize.width/CTM_RATIO/2, sprite.contentSize.height/CTM_RATIO/2);
b2FixtureDef spriteShapeDef;
spriteShapeDef.shape = &spriteShape;
spriteBody->CreateFixture(&spriteShapeDef);
}
我选择了 CTM_Ratio 而不是 PTM_Ratio。无论如何,我的 b2Bodies 没有正确定位在我的 CCSprite 上。
所以为了解释我的问题,我会说我的精灵是 50 像素宽 x 100 像素高。看起来我在那个精灵上的 b2Body 是 60 像素宽 x 110 像素高。
我知道 Box2D 使用米,但有什么办法可以完美地但 b2Body 到我的 CCSprite 上可能是通过使用像素?
谢谢!