ここから 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);
}
PTM_Ratio の代わりに CTM_Ratio を選びました。とにかく、b2Bodies が CCSprites に適切に配置されていません。
したがって、私の問題を説明するために、スプライトは幅 50 ピクセル、高さ 100 ピクセルであると言います。そのスプライトの b2Body は、幅 60 ピクセル、高さ 110 ピクセルのようです。
Box2D がメートルを使用していることは知っていますが、ピクセルを使用して b2Body を私の CCSprite に完全にする方法はありますか?
ありがとう!