【发布时间】:2012-10-11 10:06:57
【问题描述】:
我遵循将平铺地图转换为视网膜显示的指南,将宽度和高度的大小也更改为对象的两倍大小和位置。 但是正常显示的结果与视网膜显示的结果不一样正常显示是正确的但视网膜显示不正确
这是非视网膜平铺地图
这是视网膜平铺贴图
我还在视网膜 .tmx 文件中添加了 -hd 后缀
有什么问题吗?
【问题讨论】:
标签: iphone ios cocos2d-iphone
我遵循将平铺地图转换为视网膜显示的指南,将宽度和高度的大小也更改为对象的两倍大小和位置。 但是正常显示的结果与视网膜显示的结果不一样正常显示是正确的但视网膜显示不正确
这是非视网膜平铺地图
这是视网膜平铺贴图
我还在视网膜 .tmx 文件中添加了 -hd 后缀
有什么问题吗?
【问题讨论】:
标签: iphone ios cocos2d-iphone
我也观察到 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);
}
【讨论】: