1

Box2d でポリゴンを作成するために物理エディタを使用しています。ポリゴンを生成し、非網膜ディスプレイでは正常に動作しますが、網膜ディスプレイでは動作しません.....両方のディスプレイのスクリーンショットを添付しました.今、網膜ディスプレイになると、ポリゴンは設定されていません車の上で、これがその画像です

非網膜ディスプレイで完全に動作します

スプライトと同じポリゴンでは動作しません - Retina Display

プロジェクトで使用しているコードは次のとおりです

CCSprite *car = [CCSprite spriteWithFile:@"opp_car.png"];
[car setPosition:ccp(wSize.width/2+50,wSize.height/2-120)];
[self addChild:car];
b2BodyDef spriteBodyDef;
spriteBodyDef.type = b2_dynamicBody;    
spriteBodyDef.userData = car;
spriteBodyDef.position.Set(car.position.x/PTM_RATIO, car.position.y/PTM_RATIO);
b2Body *spriteBody = _world->CreateBody(&spriteBodyDef);

b2PolygonShape spriteShape;
[[GB2ShapeCache sharedShapeCache] addShapesWithFile:@"opp_car-hd.plist"];
[[GB2ShapeCache sharedShapeCache] addFixturesToBody:spriteBody forShapeName:@"opp_car-hd"];
[sprite setAnchorPoint:[[GB2ShapeCache sharedShapeCache]anchorPointForShape:@"opp_car-hd"]];

どんな助けでも大歓迎です

ありがとう.......

4

2 に答える 2

2

これは、cocos2d がポイント (Retina ディスプレイでは 1 ポイントは 2 ピクセル) で動作するためですが、box2d がボディを描画する方法 (デバッグ描画) はピクセルを使用するためです。体の作成は完璧です (Retina ディスプレイを考慮すると、世界は両方の次元で 2 倍の大きさになり、Retina デバイスと非 Retina デバイスの間の物理学の違いにつながります)。デバッグ描画方法を修正します。どこかで終わる行がありますnew GLESDebugDraw(PTM_RATIO);- それをに変更するnew GLESDebugDraw(PTM_RATIO * CC_CONTENT_SCALE_FACTOR());と、あなたはうまくいくはずです。

于 2012-01-03T12:16:32.047 に答える
0

[car setPosition:ccp(0,0)];を追加するだけです。

それが動作します :)

于 2012-01-03T10:05:04.330 に答える