CCTMXLayer *layer=map->layerNamed("Layer 0");@H_404_1@
CCSize s=layer->getLayerSize();@H_404_1@
@H_404_1@
CCPoint touchPoint=touch->getLocationInView();@H_404_1@
@H_404_1@
touchPoint=CCDirector::sharedDirector()->convertToGL(touchPoint);@H_404_1@
@H_404_1@
int indexx=(touchPoint.x)/map->getTileSize().width;@H_404_1@
int indexy=map->getMapSize().height-(touchPoint.y)/map->getTileSize().height;@H_404_1@
sprite=layer->tileAt(ccp(indexx,indexy));@H_404_1@
sprite->setScale(2);@H_404_1@
@H_404_1@
//map->getMapSize().height 获取图片的长宽像素个数@H_404_1@
//getTileSize().height 获取一个图素的高度与宽度@H_404_1@
总体思路就是具体位置除以图素的宽高,但这里需要注意,在Y轴的处理上略有不同。因为Cocos2D-X中的坐标系中,Y轴是从下到上一次增加的,而地图中的行数则是从上到下增加的,这就需要做一个转换,用总的函数减去Y轴坐标除以图素高,结果才是所有图素的函数。@H_404_1@
@H_404_1@
CCPoint HelloWorld::converttto2d(float x,float y)@H_404_1@
{@H_404_1@
CCTMXTiledMap *map=(CCTMXTiledMap *)getChildByTag(1);@H_404_1@
int mapWidth=map->getMapSize().width*map->getTileSize().width;@H_404_1@
int mapHeight=map->getMapSize().height*map->getTileSize().height;@H_404_1@
@H_404_1@
double distanse,sin1,sin11,sin22,cos11,cos1;@H_404_1@
int d2x,d2y;@H_404_1@
double mystatic5=sqrt(5.0);@H_404_1@
double mystatic=16*mystatic5;@H_404_1@
if (x>mapWidth/2)@H_404_1@
{@H_404_1@
distanse=sqrt((x-mapWidth/2)*(x-mapWidth/2)+(mapHeight-y)*(mapHeight-y));@H_404_1@
sin1=(mapHeight-y)/distanse;@H_404_1@
cos1=(x-mapWidth/2)/distanse;@H_404_1@
sin11=(sin1*2-cos1)/mystatic5;@H_404_1@
cos11=(sin1+cos1*2)/mystatic5;@H_404_1@
d2y=distanse*5/4*sin11/mystatic;@H_404_1@
sin22=(2*sin1+cos1)/mystatic5;@H_404_1@
d2x=distanse*5/4*sin22/mystatic;@H_404_1@
return ccp(d2x.d2y);@H_404_1@
}@H_404_1@
else@H_404_1@
{@H_404_1@
distanse=sqrt((mapWidth/2-x)*(mapWidth/2-x)+(mapHeight-y)*(mapHeight-y));@H_404_1@
sin1=(mapHeight-y)/distanse;@H_404_1@
cos1=(mapWidth/2-x)/distanse;@H_404_1@
sin11=(sin1*2-cos1)/mystatic5;@H_404_1@
cos11=(sin1+cos1*2)/mystatic5;@H_404_1@
d2x=distanse*5/4*sin11/mystatic;@H_404_1@
sin22=(2*sin1+cos1)/mystatic5;@H_404_1@
d2y=distanse*5/4*sin22/mystatic;@H_404_1@
return ccp(d2x,d2y);@H_404_1@
}@H_404_1@
}@H_404_1@