我有一个使用 tilemap 的项目。我有一个单独的低分辨率(29x29 Tilesize)和高分辨率(58x58)的贴图。我有这些方法来计算 tileCoord 以定位并再次返回。
- (CGPoint)tileCoordForPosition:(CGPoint)position {
int x = position.x / _tileMap.tileSize.width;
int y = ((_tileMap.mapSize.height * _tileMap.tileSize.height) - position.y) / _tileMap.tileSize.height;
return ccp(x, y);
}
- (CGPoint)positionForTileCoord:(CGPoint)tileCoord {
int x = (tileCoord.x * _tileMap.tileSize.width) + _tileMap.tileSize.width/2;
int y = (_tileMap.mapSize.height * _tileMap.tileSize.height) - (tileCoord.y * _tileMap.tileSize.height) - _tileMap.tileSize.height/2;
return ccp(x, y);
}
我从 RayWenderLich 那里得到了这个,老实说,我不明白它是如何工作的,以及为什么它必须如此复杂。但是当我使用视网膜瓷砖地图时,这不起作用,仅在 480x320 上。聪明的人能想出一种方法来使这项工作适用于高清吗?也不必在低分辨率上工作,我不打算支持 sub-iOS 7。
我希望输出处于低分辨率坐标范围内,正如您可能知道的那样,cocos2d 会为您调整到 HD 的大小。(乘以二)