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

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

概述//tiledmap是一个全局变量,要在.h文件中定义TMXTiledMap* tiledmaptiledmap = TMXTiledMap::create("map.tmx"); cocos2d::Vec2 HelloWorld::tiledCoordFromPosition(cocos2d::Vec2 position){ int x = position.x/tiledmap
//tiledmap是一个全局变量,要在.h文件中定义TMXTiledMaP* tiledmaptiledmap = 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*去掉就好,就像第一段代码那样句没有问题了。

总结

以上是内存溢出为你收集整理的瓦片地图,通过像素坐标返回瓦片坐标的函数全部内容,希望文章能够帮你解决瓦片地图,通过像素坐标返回瓦片坐标的函数所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1063105.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存