求懂Cocos2D-X的大牛们,有个小问题不懂。。3Q!
CCPointHelloWorld::tileCoordForPosition(CCPointposition){intx=position.x/tileMap->get...
CCPoint HelloWorld::tileCoordForPosition(CCPoint position)
{
int x = position.x / tileMap->getTileSize().width;
int y = ((tileMap->getMapSize().height * tileMap->getTileSize().height) - position.y) / tileMap->getTileSize().height;
return ccp(x, y);
}
书上说这个是把精灵的坐标装换为TileMap坐标。是什么意思??? 展开
{
int x = position.x / tileMap->getTileSize().width;
int y = ((tileMap->getMapSize().height * tileMap->getTileSize().height) - position.y) / tileMap->getTileSize().height;
return ccp(x, y);
}
书上说这个是把精灵的坐标装换为TileMap坐标。是什么意思??? 展开
2个回答
展开全部
cocos2d的坐标系和tilemap的坐标系是不同的,楼上说得挺不错的:
1、cocos2d的坐标系:左下角为原点,x轴向右,y轴向上,以浮点数为单位;
2、tilemap的坐标系: 左上角为原点,x轴向右,y轴向下,以整数为单位;它标识的不是像素的位置,而是像素所在的格子(tile)的索引。
所以装换的时候需要格子的长和宽(getTileSize()).
getMapSize可以获得tile map的宽和高的索引最大值,也就是该map行有多少个格子,列有多少个格子。
给个比较好的教程,里面就有两个坐标系转换的函数介绍。
http://www.raywenderlich.com/15230/how-to-make-a-platform-game-like-super-mario-brothers-part-1
1、cocos2d的坐标系:左下角为原点,x轴向右,y轴向上,以浮点数为单位;
2、tilemap的坐标系: 左上角为原点,x轴向右,y轴向下,以整数为单位;它标识的不是像素的位置,而是像素所在的格子(tile)的索引。
所以装换的时候需要格子的长和宽(getTileSize()).
getMapSize可以获得tile map的宽和高的索引最大值,也就是该map行有多少个格子,列有多少个格子。
给个比较好的教程,里面就有两个坐标系转换的函数介绍。
http://www.raywenderlich.com/15230/how-to-make-a-platform-game-like-super-mario-brothers-part-1
展开全部
=。= 真实坐标 转换为 格子坐标。。。 做战旗用? 还有触发机关
你在 桌子上(cocos2d 世界) 左下角是坐标原点
平铺很多张纸(tilemap)
有一张纸上放了一个东西(目标)
你知道 目标的坐标(positionXY)
position.x / tileMap->getTileSize().width ---> 他的x除以纸的宽,得到这是横向第几张纸
同理 y 除以 纸的高 得到 他在纵向第几张纸
这个是程序中的第几张 不是现实的, 现实从1开始 程序从0开始
你在 桌子上(cocos2d 世界) 左下角是坐标原点
平铺很多张纸(tilemap)
有一张纸上放了一个东西(目标)
你知道 目标的坐标(positionXY)
position.x / tileMap->getTileSize().width ---> 他的x除以纸的宽,得到这是横向第几张纸
同理 y 除以 纸的高 得到 他在纵向第几张纸
这个是程序中的第几张 不是现实的, 现实从1开始 程序从0开始
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询