cocos creator2.4.6版本中使用tiledMap45°地图,怎么通过点击屏幕获取到每一个地图块

大佬们,怎么让每一个地图块,有点击事件啊?

可以直接通过点击坐标转换为格子坐标 然后判断当前格子是否存在 存在就是被点击到了 你就可以写你的点击逻辑了

大佬,具体怎么转换呢?可以讲述得再详细点么? :joy:

   //像素坐标转化为格子坐标
    getTiledByPos(worldPos: cc.Vec2) {
        let pos = this.tiledMap.node.convertToNodeSpaceAR(worldPos);
        let tilePos = cc.v2(0, 0);
        let tileSize = this.tiledMap.getTileSize();
        let mapSize = this.tiledMap.getMapSize();
        tilePos.x = Math.floor(pos.x / tileSize.width);
        tilePos.y = Math.floor((tileSize.height * mapSize.height - pos.y) / tileSize.height);
        return tilePos;
    }
    //格子坐标转化为像素坐标
    getPosByTile(tile: cc.Vec2) {
        let tileSize = this.tiledMap.getTileSize();
        let mapSize = this.tiledMap.getMapSize();
        let x = tile.x * tileSize.width + tileSize.width / 2;
        let y = tileSize.height * mapSize.height - tile.y * tileSize.height - tileSize.height / 2;
        return cc.v2(x, y);
    }

这是平面的tiledmap 我没用过45°的 应该也一样吧

棒!谢谢大佬,我试一下 :+1:

倾斜45°的坐标到格子的转换解决了吗?