tiled map editor 0.11 ,,块大小64*32
2dx3.5
Vec2 TMXLayer::getPositionAt(const Vec2& pos)
参数是瓦片坐标
返回的是游戏屏幕坐标
这2个数据与在瓦片编辑器中看到的不一样。函数得到的坐标点实际上是位于正确坐标的附近一格。
是哪边出错了。
editor?
2dx3.5
我使用错误?
谢谢
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);
好像理解错误。。。。
改了源代码,结果 就是正确的。 getPositionForStaggeredAt(pos); 用这个返回值去sprite->setPosition就会出现在瓦片正确的坐标上了。
我只用45度交错,其他类型的瓦片的没测试,估计也要相应的改。
下回更新,官方能不能统一验证下。
第一,坐标x相同,y不同,所以进行转换,getPositionForStaggeredAt。
第二,瓦块的坐标都是锚点为ZERO的点,所以你想获得 还要加上Point(单个瓦块.width/2,单个瓦块.height/2) 才是那个瓦块的中心点坐标。
把锚点设成中心,就不用转换了。 为什么锚点要在zero,然后再去手动转换一次?