关于TileMap(瓦片地图)
2015-10-20 15:22
323 查看
1.加载地图,获取背景层,调整背景位置,获取其他对象
//获取地图
map=CCTMXTiledMap::create("tilemap1.tmx");
//设置地图背景层的位置
auto background=map->layerNamed("bg");
background->setAnchorPoint(ccp(0.5,0.5));
background->setPosition(visibleSize.width/2,visibleSize.height/2);
//获得地图原点和屏幕原点的偏移
offX=(map->getContentSize().width-visibleSize.width)/2;
offY=(map->getContentSize().height-visibleSize.height)/2;
//显示地图
addChild(map,bgZ);
//获取地图中的标记点
objects=map->objectGroupNamed("obj");
CCDictionary*obj=objects->objectNamed("0");
2.将屏幕坐标转换为瓦片坐标
cocos2d::CCPointmyTowerDefeat::convertToMapPosision(CCPoint position)
{
intx=(position.x+offX)/map->getContentSize().width*map->getMapSize().width;
//按照比例取瓦片地图的点
inty=map->getMapSize().height-(position.y+offY)/map->getContentSize().height*map->getMapSize().height;//纵坐标相反
return ccp(x,y);
}
3.获取瓦片属性
//注意,这里的GID是跟瓦片类型绑定的,而不是地图中的第n个瓦片,即不同位置的瓦片的GID有可能是一样的
autogid=map->layerNamed("bg")->tileGIDAt(position);
//获取瓦片的所有属性
autotileProperty=map->propertiesForGID(gid);
//取出键对应的属性
if(tileProperty)canTouch=tileProperty->valueForKey("canTouch")->intValue();
//获取地图
map=CCTMXTiledMap::create("tilemap1.tmx");
//设置地图背景层的位置
auto background=map->layerNamed("bg");
background->setAnchorPoint(ccp(0.5,0.5));
background->setPosition(visibleSize.width/2,visibleSize.height/2);
//获得地图原点和屏幕原点的偏移
offX=(map->getContentSize().width-visibleSize.width)/2;
offY=(map->getContentSize().height-visibleSize.height)/2;
//显示地图
addChild(map,bgZ);
//获取地图中的标记点
objects=map->objectGroupNamed("obj");
CCDictionary*obj=objects->objectNamed("0");
2.将屏幕坐标转换为瓦片坐标
cocos2d::CCPointmyTowerDefeat::convertToMapPosision(CCPoint position)
{
intx=(position.x+offX)/map->getContentSize().width*map->getMapSize().width;
//按照比例取瓦片地图的点
inty=map->getMapSize().height-(position.y+offY)/map->getContentSize().height*map->getMapSize().height;//纵坐标相反
return ccp(x,y);
}
3.获取瓦片属性
//注意,这里的GID是跟瓦片类型绑定的,而不是地图中的第n个瓦片,即不同位置的瓦片的GID有可能是一样的
autogid=map->layerNamed("bg")->tileGIDAt(position);
//获取瓦片的所有属性
autotileProperty=map->propertiesForGID(gid);
//取出键对应的属性
if(tileProperty)canTouch=tileProperty->valueForKey("canTouch")->intValue();
相关文章推荐
- cocos2dx骨骼动画Armature源码剖析(三)
- cocos2dx 交叉编译 iconv库 protobuf库
- Cocos2d-x中PageView使用中的问题
- cmake clion 构建cocos2dx 应用程序并编译ios mac android
- 【笔记】试玩 cocos2d-x-3.0beta on android
- cocos2dx出现 Fatal signal 11 (SIGSEGV) at 0x00000000 (code=1)
- cocos2dx 粒子系统CCParticleSystem
- cocos2dx 中各种运动和速度
- Cocos2dx 中的CCCallFunc,CCCallFuncN,CCCallFuncND,CCCallFuncO比较
- CCScale9Sprite的用法
- cocos2dx入门
- Cocos2D-x中关于do{}while(0)和CC_BREAK_IF的用法
- [cocos2dx]随机数的使用
- 滴答UI编辑器初实战,实现cocos2dx的支持
- 成都公司诚聘cocos2dx(有wp经验)
- cocos2dx中js绑定的回调
- 第一次写博客,多多关照,
- xcode创建cocos2dx模版 关于couldn't add 'com.apple.XcodeGenerated' tag错误
- cocos2d-x 重力感应 加速器的使用