目前正在制作游戏,并将其转换为视网膜。我正在使用cocos2d和Tiled。
我在他们的网站上遵循了指南:Retina Display in cocos2d,但是对象的位置有问题。
我现在正在做什么:
NSMutableDictionary *playerSpawn = [objects objectNamed:@"SpawnPoint"];
NSAssert(playerSpawn != nil, @"Player spawn object not found");
int x = [[playerSpawn valueForKey:@"x"] intValue];
int y = [[playerSpawn valueForKey:@"y"] intValue];
self.player.position = ccp(x,y);
这个sd TMX地图工作正常,但在Retina中运行时,对象定位不正确。
如果我记录它给我的位置:
// SD
158.000000, 63.000000
// Retina
158.000000, 383.000000
赞赏我可能做错的想法
答案 0 :(得分:4)
我找到了答案。
我不得不将检索到的X和Y位置除以CC_CONTENT_SCALE_FACTOR()
每次使用CC_CONTENT_SCALE_FACTOR()
和tilemap.tileSize.height
时,我也必须加tilemap.tileSize.width
。
答案 1 :(得分:2)
我也挣扎了几个小时,所以我想我会分享我是如何解决它的:)
self.hero.position = [self ccpConvertForRetina:ccp(x, y) :self.map];
- (CGPoint) ccpConvertForRetina : (CGPoint) pointToConvert : (CCTMXTiledMap*) map {
if (CC_CONTENT_SCALE_FACTOR() == 2) {
float x = pointToConvert.x;
float y = pointToConvert.y;
float numBortHeight = map.mapSize.height;
float tileSizeHeight = map.tileSize.height;
float yCalc = y - (tileSizeHeight*numBortHeight) / 2;
return CGPointMake(x,yCalc);
}
else {
return pointToConvert;
}
}