我使用Tiled应用程序创建了一个tile map。地图为40X40,tileset大小为32X32。在游戏中,地图向下滚动,给出了汽车正在移动的错觉。在游戏过程中点击地图时,我无法获得Y坐标。我需要将Cocos2d坐标系转换为tileset系统。当瓷砖地图到达终点时,我将汽车再次放在地图的开头。这样地图就会无限延续。在Tiled应用程序中,我可以看到我需要获得的块的坐标是3,19,但是我很难弄清楚如何转换Cocos2d坐标来反映该块。这是我的代码:
- (CGPoint)tileCoordForPosition:(CGPoint)position {
int x = position.x / self.tiledMap.tileSize.width;
int y1 = ((self.tiledMap.mapSize.height * self.tiledMap.tileSize.height) - position.y) / self.tiledMap.tileSize.height;
return ccp(x, y1);
}
-(void) ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *touch = [touches anyObject];
CGPoint location = [touch locationInView:[touch view]];
location = [[CCDirector sharedDirector] convertToGL:location];
CGPoint tileCoord = [self tileCoordForPosition:location];
}
答案 0 :(得分:0)
检查以下链接:http://www.cocos2d-iphone.org/wiki/doku.php/prog_guide:tiled_maps?s=tmx
尝试使用CCTMXTiledMap的方法获取CCTMXLayer对象:
/** return the TMXLayer for the specific layer */
-(CCTMXLayer*) layerNamed:(NSString *)layerName;
然后使用以下CCTMXLayer方法之一:
-(CCSprite*) tileAt:(CGPoint)tileCoordinate;
-(uint32_t) tileGIDAt:(CGPoint)tileCoordinate;
-(uint32_t) tileGIDAt:(CGPoint)pos withFlags:(BOOL) flags;