45度交错瓦片地图,获取的坐标不对。

tiled map editor 0.11 ,,块大小64*32
2dx3.5

Vec2 TMXLayer::getPositionAt(const Vec2& pos)
参数是瓦片坐标
返回的是游戏屏幕坐标

这2个数据与在瓦片编辑器中看到的不一样。函数得到的坐标点实际上是位于正确坐标的附近一格。

是哪边出错了。
editor?
2dx3.5
我使用错误?

谢谢

记得45度瓦片地图,是要进行坐标变换的。

— Begin quote from ____

引用第1楼abc88798于2015-04-20 10:57发表的 :
记得45度瓦片地图,是要进行坐标变换的。 http://www.cocoachina.com/bbs/job.php?action=topost&tid=296882&pid=1287802

— End quote

源代码里,已经有相应函数了,不用自己变换吧。
case TMXOrientationStaggered:
ret = getPositionForStaggeredAt(pos);

好像理解错误。。。。:5:

改了源代码,结果 就是正确的。 getPositionForStaggeredAt(pos); 用这个返回值去sprite->setPosition就会出现在瓦片正确的坐标上了。
我只用45度交错,其他类型的瓦片的没测试,估计也要相应的改。
下回更新,官方能不能统一验证下。

:14:
第一,坐标x相同,y不同,所以进行转换,getPositionForStaggeredAt。
第二,瓦块的坐标都是锚点为ZERO的点,所以你想获得 还要加上Point(单个瓦块.width/2,单个瓦块.height/2) 才是那个瓦块的中心点坐标。

把锚点设成中心,就不用转换了。 为什么锚点要在zero,然后再去手动转换一次?