タイルマップを使用するプロジェクトがあります。低解像度 (29x29 タイルサイズ) と高解像度 (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 でのみ、Retina タイルマップを使用すると機能しません。賢い誰かがこれを HD で機能させる方法を思い付くことができますか? 低解像度でも動作する必要はありません。サブ iOS 7 をサポートする予定はありません。
ご存知かもしれませんが、cocos2d が HD へのサイズ変更を行います。(2倍して)