Iphone 基于cocos2d的等距平铺对策问题
我一直在试图弄清楚这场等轴游戏的意义 当我打开一个新的项目并加载相同的地图时,这个特殊的函数会给我不同的结果Iphone 基于cocos2d的等距平铺对策问题,iphone,ios,cocos2d-iphone,isometric,Iphone,Ios,Cocos2d Iphone,Isometric,我一直在试图弄清楚这场等轴游戏的意义 当我打开一个新的项目并加载相同的地图时,这个特殊的函数会给我不同的结果 -(CGPoint) locationFromTilePos:(CGPoint)tilePos; { CCTMXLayer *grass = [self.tileMap layerNamed:@"Grass"]; CCSprite *tile = [grass tileAt:tilePos]; float x = -tile.position.x - self.t
-(CGPoint) locationFromTilePos:(CGPoint)tilePos;
{
CCTMXLayer *grass = [self.tileMap layerNamed:@"Grass"];
CCSprite *tile = [grass tileAt:tilePos];
float x = -tile.position.x - self.tileMap.tileSize.width + 32;
float y = -tile.position.y - self.tileMap.tileSize.height;
return CGPointMake(x, y);
}
当在骑士战斗中以(0,0)的形式在tilePos中进食时
- (CGPoint)positionForTileCoord:(CGPoint)pos {
float halfMapWidth = _tileMap.mapSize.width*0.5;
float halfMapHeight = _tileMap.mapSize.height*0.5;
float tileWidth = _tileMap.tileSize.width;
float tileHeight = _tileMap.tileSize.height;
int convertedY = _tileMap.mapSize.height-(pos.y-1);
int x = halfMapWidth*tileWidth + tileWidth*pos.x*0.5-tileWidth*pos.y*0.5;
int y = halfMapHeight*tileHeight +tileHeight*convertedY*0.5 - tileHeight*pos.x*0.5-tileHeight*0.5;
return ccp(x, y);
}
相反,试试这个:
// calculating the tile coordinates from screen location
-(CGPoint) tilePosFromLocation:(CGPoint)location
{
CGPoint pos = location;
float halfMapWidth = _tileMap.mapSize.width*0.5;
float mapHeight = _tileMap.mapSize.height;
float tileWidth = _tileMap.tileSize.width;
float tileHeight = _tileMap.tileSize.height;
CGPoint tilePosDiv = CGPointMake(pos.x/tileWidth, pos.y/tileHeight);
float invereseTileY = mapHeight - tilePosDiv.y;
// Cast int to make sure that result is in whole numbers
float posX = (int)(invereseTileY + tilePosDiv.x - halfMapWidth);
float posY = (int)(invereseTileY - tilePosDiv.x + halfMapWidth);
return CGPointMake(posX, posY);
}
这个项目已经有一年的历史了,正在使用cocos2d iPhone v.99.5,我相信这是在它支持视网膜设备之前。您可以尝试升级cocos2d版本,并修复出现的问题(在本例中,我将升级到1.1,而不是2.x,因为升级路径更容易),好吗?那么值的差异是因为较旧的cocos2d版本?另外,您能给我指一下我可以研究平铺等距地图并访问cocos2d.float posX=(int)(invereseTileY+tilePosDiv.x-halfMapWidth)中坐标的任何资源吗;浮点位置=(int)(invereseTileY-tilePosDiv.x+半映射宽度);没有得到这部分这些将是你的X和Y贴图坐标,根据屏幕坐标计算。我的意思是我不能正确理解逻辑。我完全理解正交贴图的平铺坐标背后的逻辑。我得到了用瓷砖宽度和高度划分触摸坐标的部分。但是下一步是我不明白的。半地图宽度部分是由于地图被SKU了,如果你在纸上画它,你会看到它是如何出现的,因为当你在x轴上移动时,例如你也在Y屏幕坐标下移动。