瓦片地图
-(void) ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
CCNode* node = [self getChildByTag:TileMapNode];
CCTMXTiledMap* tileMap = (CCTMXTiledMap*)node;
// 将屏幕位置转换为瓦片坐标
CGPoint touchLocation = [self locationFromTouch:[touches anyObject]];
CGPoint tilePos = [self tilePosFromLocation:touchLocation tileMap:tileMap];
}
//点击的位置
-(CGPoint) locationFromTouch:(UITouch*)touch
{
CGPoint touchLocation = [touch locationInView: [touch view]];
return [[CCDirector sharedDirector] convertToGL:touchLocation];
}
//location:点击的位置 tileMap:地图
-(CGPoint) tilePosFromLocation:(CGPoint)location tileMap:(CCTMXTiledMap*)tileMap
{
//点击的位置+地图的坐标(偏移量)
CGPoint pos = ccpSub(location, tileMap.position);
//缩放的大小(屏幕外,未滚动)
float scaledWidth = tileMap.tileSize.width / CC_CONTENT_SCALE_FACTOR();
float scaledHeight = tileMap.tileSize.height / CC_CONTENT_SCALE_FACTOR();
//地图的坐标
pos.x = (int)(pos.x / scaledWidth);
pos.y = (int)((tileMap.mapSize.height * tileMap.tileSize.height - pos.y) / scaledHeight);
return pos;
}
convertToGL
考虑到当前场景的SCALE因子