5

幅と高さのサイズを2倍のサイズに変更し、オブジェクトの位置もRetinaディスプレイ用にタイルマップを変換するガイドに従います。しかし、通常のディスプレイの結果は Retina ディスプレイと同じではありません 通常のディスプレイは正しく、Retina ディスプレイは正しくありません

これは非 Retina タイル マップです ここに画像の説明を入力

これが網膜タイルマップです ここに画像の説明を入力

また、網膜の .tmx ファイルに -hd サフィックスを追加します

何か問題がありますか?

4

1 に答える 1

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);

}
于 2012-10-11T13:26:58.293 に答える