加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

瓦片地图,通过像素坐标返回瓦片坐标的函数

发布时间:2020-12-14 21:40:28 所属栏目:百科 来源:网络整理
导读://tiledmap是一个全局变量,要在.h文件中定义TMXTiledMap* tiledmap tiledmap = TMXTiledMap ::create ( "map.tmx" ); cocos2d ::Vec2 HelloWorld ::tiledCoordFromPosition (cocos2d ::Vec2 position){ int x = position . x/tiledmap - getTileSize() . wi
//tiledmap是一个全局变量,要在.h文件中定义TMXTiledMap* tiledmap
tiledmap = TMXTiledMap::create("map.tmx");

 cocos2d::Vec2 HelloWorld::tiledCoordFromPosition(cocos2d::Vec2 position)
{
    int x = position.x/tiledmap->getTileSize().width;
    int y = (tiledmap->getTileSize().height*tiledmap->getMapSize().height-position.y)/tiledmap->getTileSize().height;
    return Vec2(x,y);
}
  • 函数放回类型cocos2d::Vec2,HelloWorld类名,tiledCoordFromPosition函数名,参数是cocos2d::Vec2类型
  • 该瓦片在地图中(原点在左上角)x轴坐标的像素position.x除以单个瓦片像素尺寸的宽tiledmap->getTileSize().width
  • 单个瓦片像素尺寸的高tiledmap->getTileSize().height乘以地图中高度的瓦片个数tiledmap->getMapSize().height即整个地图高的像素,减去该瓦片在地图中y轴的坐标position.y,得到的即该瓦片在OpenGL(原点在左下角,cocos2dx默认的坐标)坐标下y轴的像素值,最后再除以单个瓦片像素尺寸的高tiledmap->getTileSize().height

我在调试的时候犯了一个特别基础的错误,我在.h文件定义了全局变量TMXTiledMap* tiledmap,然后又在.cpp文件里面这样给他初始化,代码如下:

//.h定义了tiledmap,再这样声明变量初始化,会出错!!!
TMXTiledMap* tiledmap = TMXTiledMap::create("map.tmx");

结果调试了半天都不行,后来才发现是重复定义了,导致的结果是map.tmx地图虽然可以正常地在屏幕中显示,但是却无法获得tiledmap里面的瓦片参数,调试一直出错误。解决的办法很简单,就是把.cpp里面的TMXTiledMap*去掉就好,就像第一段代码那样句没有问题了。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读