求懂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坐标。是什么意思???
展开
 我来答
xil654321iang
2013-08-30
知道答主
回答量:4
采纳率:0%
帮助的人:5433
展开全部
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
赵承鹏
2013-07-29 · TA获得超过2714个赞
知道小有建树答主
回答量:379
采纳率:100%
帮助的人:162万
展开全部
=。= 真实坐标 转换为 格子坐标。。。 做战旗用? 还有触发机关

你在 桌子上(cocos2d 世界) 左下角是坐标原点

平铺很多张纸(tilemap)

有一张纸上放了一个东西(目标)

你知道 目标的坐标(positionXY)
position.x / tileMap->getTileSize().width ---> 他的x除以纸的宽,得到这是横向第几张纸
同理 y 除以 纸的高 得到 他在纵向第几张纸

这个是程序中的第几张 不是现实的, 现实从1开始 程序从0开始
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式