@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