Quantcast
Channel: Cocos中文社区 - 最新主题
Viewing all articles
Browse latest Browse all 88737

请教 ---- Tiledmap 坐标转换问题

$
0
0

@386892607 写道:

Tmx资源用的是官方的测试用例里面的 ..\cocos2d-x-3.10\tests\cpp-tests\Resources\TileMaps\iso-test2.tmx
然后我的目标是想 算出在任意移动情况下,屏幕中心点的位置所在的地图的格子坐标(也就是行列号)

代码是以下这段:

Vec2 TMXTiledMap::tilePosFromPoint(Vec2 posRelativeToParent)
{
auto winSize = Director::getInstance()->getWinSize();
Size mapSize = this->getMapSize();
Size tileSize = this->getTileSize();
Vec2 posInNode = ccpSub(Vec2(winSize.width / 2, winSize.height / 2), posRelativeToParent);
CCLOG("screen center point => big map : position = [%.1f, %.1f]", posInNode.x, posInNode.y);

Vec2 tilePos = Vec2(posInNode.x / tileSize.width, posInNode.y / tileSize.height);
float invY = mapSize.height - tilePos.y;
float halfWidth = mapSize.width * 0.5f;

int posX = (int)(invY + tilePos.x - halfWidth);
int posY = (int)(invY - tilePos.x + halfWidth);

posX = posX < 0 ? 0 : posX;
posX = posX >= mapSize.width ? mapSize.width - 1 : posX;

posY = posY < 0 ? 0 : posY;
posY = posY >= mapSize.height ? mapSize.height - 1 : posY;
Vec2 pos = Vec2(posX, posY);

return pos;

}

问题截图如上,当我的“X”点移动到顶点上的时候, 屏幕下方的坐标显示是(7, 21)但是这个格子的坐标,应该是(0,0)才对啊。。。

求指导问题出在哪里。。多谢

帖子: 2

参与者: 1

阅读整个主题


Viewing all articles
Browse latest Browse all 88737

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>