cocos2d-x 基础系列 (11) Tilemap介绍

在scene中加如下代码可以加载一副地图

但是一点地图程序就退出,点击屏幕的时候程序会退出,应该是layer没有定义吧。

// TileMap
                    auto map = TMXTiledMap::create("isometric_grass_and_water.tmx");
                    map->setPosition(Vec2(visibleSize.width/4*3 - map->getContentSize().width/2, 0));

                    auto listener1 = EventListenerTouchOneByOne::create();

                    listener1->onTouchBegan = [](Touch* touch, Event* event){
                        return true; // if you are consuming it
                    };

                    listener1->onTouchEnded = [=](Touch* touch, Event* event){
                        auto layer = map->getLayer("layer0");
                        Size viewSize = Director::getInstance()->getWinSize();

                        Vec2 mapCordinate = map->convertToNodeSpace(Director::getInstance()->convertToGL(touch->getLocationInView()));
                        int tileX = mapCordinate.x / map->getTileSize().width;
                        int tileY = (viewSize.height - mapCordinate.y) / map->getTileSize().height;

                        int id = layer->getTileGIDAt(Vec2(tileX, tileY));
                        Sprite* tileSprite = layer->getTileAt(Vec2(tileX, tileY));

                        std::cout << "Tile GID: " << id << std::endl;
                    };

                    Director::getInstance()->getEventDispatcher()->addEventListenerWithSceneGraphPriority(listener1, map);

                    scene->addChild(map, 0, 99); // with a tag of '99'



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值