cocos2dx TMX地图
2016-03-12 17:45
429 查看
[code] auto map = TMXTiledMap::create("map.tmx"); //加载地图 auto mapSize = map->getMapSize(); //获取地图大小 this->addChild(map); //添加到当前 auto mapProperties = map->getProperties(); //获取地图属性 CCLOG("%s", mapProperties["type"].asString().c_str()); //获取type auto sceneLayer = map->getLayer("scene"); //获取图层scene auto layerProperties = sceneLayer->getProperties(); //获取图层信息 CCLOG("%s", layerProperties["type"].asString().c_str()); auto tileProperties = map->getPropertiesForGID(1).asValueMap(); //获取第一个图块的信息 CCLOG("%s", tileProperties["type"].asString().c_str()); auto objectGroup = map->getObjectGroup("object"); //获取object对象的对象组 auto objectPlayer = objectGroup->getObject("player"); //获取player对象 CCLOG("%s", objectPlayer["type"].asString().c_str()); auto objectColor = objectGroup->getObject("color"); //获取color对象 auto colorX = objectColor["x"].asInt() / 32; auto colorY = objectColor["y"].asInt() / 32; auto colorW = objectColor["width"].asInt() / 32; auto colorH = objectColor["height"].asInt() / 32; for (int i = colorX; i < colorX + colorW; i++){ for (int k = colorY; k < colorY + colorH; k++){ auto sprite = sceneLayer->getTileAt(Vec2(i, mapSize.height - k - 1)); //获取瓦块 sprite->setColor(Color3B(255, 0, 0)); //修改瓦块 } } auto player = Sprite::create("c.png"); player->setPosition(objectPlayer["x"].asFloat(), objectPlayer["y"].asFloat()); this->addChild(player); auto listener = EventListenerTouchOneByOne::create(); // listener->onTouchBegan = [player](Touch *touch, Event* event){ auto target = (TMXTiledMap*)event->getCurrentTarget(); auto sceneLayer = target->getLayer("scene"); auto point = target->convertToNodeSpace(touch->getLocation()); //世界坐标转map本地坐标 point.x = int(point.x / 32); point.y = target->getMapSize().height - int(point.y / 32) - 1; auto tileGID = sceneLayer->getTileGIDAt(point); //获取瓦块的GID auto tile = target->getPropertiesForGID(tileGID).asValueMap(); //获取图块信息 if (tile["move"].isNull() != true && tile["move"].asBool() == true){ //判断是否可以移动 player->setPosition(target->convertToNodeSpace(touch->getLocation())); } return false; }; Director::getInstance()->getEventDispatcher()->addEventListenerWithSceneGraphPriority(listener, map);
相关文章推荐
- Win 7平台搭建Cocos2d-x Android开发环境
- 创建cocos2d-x工程及文件夹解析
- cocos2d-html5 各平台声音播放总结
- Cocos2dx-- 3.0前后对比
- protubuf在cocos2dx的应用安装
- cocos2d-x之C++ 调用Java函数并接收返回值
- cocos2d-x的回调函数
- cocos2dx常见的46中+22中动作详解
- quick-cocos2d-x图片资源加密(续)
- 让quick-cocos2d-x支持加密的plist文件
- quick-cocos2d-x 图片资源加密
- cocos2d-x 2.2.3 之菜单分析(1)
- Eclips运行cocos-js报错Multiple dex files define Lcom/chukong/cocosplay/client/CocosPlayClient;
- cocos2d-x 以主角为中心移动地图(学习笔记)
- cocos2d-x避免手动修改android.mk文件来编译
- cocos2d-x使用地图编辑器的类(cocos2d-x学习)
- 分析Cocos2d-x横版ACT手游源码 1、公共
- cocos2dx 文件操作
- cocos2dx 定时器
- cocos2dx 物理按键