我正在使用物理编辑器在 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"]];
任何帮助,将不胜感激
谢谢.......
这是因为 cocos2d 以点为单位工作(1 点是视网膜显示屏上的 2 个像素),但 box2d 绘制主体(调试绘制)的方式使用像素。身体的创造是完美的(如果你要考虑视网膜显示,你的世界在两个维度上都会是两倍大,导致视网膜和非视网膜设备之间的物理差异),但相反你需要修复您的调试绘制方法。某处会有一条线结束new GLESDebugDraw(PTM_RATIO);
- 将其更改为new GLESDebugDraw(PTM_RATIO * CC_CONTENT_SCALE_FACTOR());
你应该表现得很好。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)