2012-10-11 17 views
5

Sigo la guía de conversión de mapa de mosaico para retina pantalla cambiando el tamaño de ancho y alto a doble tamaño y la posición del objeto también. pero el resultado en la pantalla normal no es igual a la visualización normal visualización de la retina es correcta, pero la pantalla retina no es correctoposición incorrecta del mapa de mosaico cuando convierto a retina pantalla

Esto no es retina baldosa del mapa enter image description here

y esto es retina baldosa del mapa enter image description here

También agregué -hd sufijo al archivo .tmx de retina

¿Hay algún problema?

Respuesta

6

Me también observó el mismo problema con el mapa de mosaico cocos2D y finalmente se resolvió al dividir CC_CONTENT_SCALE_FACTOR. En el modo retina, da 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); 
} 

// He utilizado esta función para obtener la cuerda ..

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

sip, tilemap las coordenadas son uno de los pocos lugares donde cocos2d no convierte automáticamente coords. – LearnCocos2D

+0

cuales son estos códigos. donde debería poner estos códigos – aratn0n

+0

@ aratn0n, para obtener la posición de los objetos en la capa de objeto. – Guru

Cuestiones relacionadas