当我转换为视网膜显示时,瓷砖地图的位置错误

时间:2012-10-11 10:06:58

标签: iphone ios cocos2d-iphone

我通过改变宽度和高度的大小到对象的双倍大小和位置,遵循转换视网膜显示的瓷砖地图的指南。 但正常显示的结果与视网膜显示正常显示不正确但视网膜显示不正确

相同

这是非视网膜瓷砖地图 enter image description here

这是视网膜瓷砖地图 enter image description here

我还将-hd后缀添加到retinal .tmx文件

有什么问题吗?

1 个答案:

答案 0 :(得分:6)

我也观察到cocos2D瓦片地图的相同问题,最后通过划分CC_CONTENT_SCALE_FACTOR来解决。在视网膜模式下,它给出2.0。

CCTMXObjectGroup *objects = [tileMap objectGroupNamed:NN_TILE_MAP_OBJECT_LAYER];

CGSize s = [[CCDirector sharedDirector] winSize];

NSMutableDictionary *newtonPos = [objects objectNamed:NN_NEWTON_POS];        

if(newtonPos)
{
    float x = ([[newtonPos valueForKey:@"x"] floatValue])/CC_CONTENT_SCALE_FACTOR();
    float y = [[newtonPos valueForKey:@"y"] floatValue]/CC_CONTENT_SCALE_FACTOR();

    MyGameScreen *p = (MyGameScreen*)self.parentLayer;
    p.gameActor.position = ccp(x, y);
}

//我用这个函数来得到和弦..

- (CGPoint)getTileCoordForPosition:(CGPoint)position
{
    int maxTileCol = self.mapSize.height; 

    int x = ( (position.x-self.position.x)/TILE_SIZE);
    int y = maxTileCol - ( ((position.y)-self.position.y)/TILE_SIZE);

    if( x >= TILE_IN_ROW)
        x = TILE_IN_ROW - 1;

    if( y >= TILE_IN_COL)
        y = TILE_IN_COL - 1;

    return ccp(x, y);

}