2012-10-11 9 views
5

Seguo la guida della conversione della mappa delle tessere per la visualizzazione della retina modificando le dimensioni della larghezza e dell'altezza in base alle dimensioni doppie e alla posizione dell'oggetto. ma il risultato in esposizione normale non è uguale display retina display normale è corretto ma retina display non è correttoposizione errata della mappa delle tessere quando si converte in display retina

Questo è non-retina piastrella mappa enter image description here

e questo è retina mappa piastrella enter image description here

Aggiungo anche il suffisso -hd al file .tmx retinale

C'è qualcosa che non va?

risposta

6

Ho anche osservato lo stesso problema con la mappa di tile cocos2D e infine risolto dividendo CC_CONTENT_SCALE_FACTOR. In modalità retina dà 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); 
} 

// Ho usato questa funzione per ottenere corda ..

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

} 
+2

Yup, tilemap coords è uno dei pochi posti in cui cocos2d non converte automaticamente coordinate. – LearnCocos2D

+0

che cosa sono questi codici. dove dovrei mettere questi codici. – aratn0n

+0

@ aratn0n, per ottenere la posizione degli oggetti nel livello dell'oggetto. – Guru