我正在使用物理编辑器在Box2d中创建多边形。它生成多边形并在非视网膜显示器中工作正常,但在视网膜显示器中不起作用.....我已经为两个显示器附加了屏幕截图。现在,当进入视网膜显示时,多边形未设置在这里的车是这个的形象
这是我在项目中使用的代码
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"]];
任何帮助都会得到赞赏
感谢.......
答案 0 :(得分:2)
这是因为cocos2d在点上工作(1点在视网膜显示器上是2个像素),但是box2d绘制物体的方式(调试绘图)使用像素。身体的创造是完美的(如果您考虑到视网膜显示,那么您的世界将在两个维度上都是两倍大,导致视网膜和非视网膜设备之间的物理差异),而是您需要修复调试绘制方法。在某个地方会有一行结束new GLESDebugDraw(PTM_RATIO);
- 将其更改为new GLESDebugDraw(PTM_RATIO * CC_CONTENT_SCALE_FACTOR());
,你应该会很好。
答案 1 :(得分:0)
只需添加[car setPosition:ccp(0,0)];
它会起作用:))