zoukankan      html  css  js  c++  java
  • 万恶的tileMap

    先吐槽下。。

    本来,我们准备用tileMap来做地图的,但发现一个问题,就是tileMap层中不能添加cc.Sprite,这导致了tileMap只适合做2D平面没有遮挡的游戏,并且主角是不能有效率的进行播放动画。

    找到一个我类似问题的帖子,大家可以点击这里看一下。

    虽然这个问题导致了项目不考虑用tileMap了,但还是学到了点相关知识,下面分享出来这几天的研究结果。

            var size = cc.director.getWinSize();
            var map = cc.TMXTiledMap.create(res.tmx_tmx);     //获取tmx
            this.addChild(map);
    
            var layer1 = map.getLayer("floor");               //得到指定图层
            var layer2 = map.getLayer("jianzhu");
            var objects = map.getObjectGroup("duixiang");     //得到指定对象组
    
            cc.log(layer2.properties.ni);                     //得到tmx编辑器对floor设置的属性"ni"的值
    
            cc.log(objects.properties["wo"]);                 //得到tmx编辑器对对象组duixiang设置的属性"wo"的值,好像不推荐这样的属性表示方式,因为web混淆的时候可能有问题
    
            var oneObject = objects.objectNamed("hero");      //得到对应对象组的一个指定对象
            for(var i in oneObject){
                cc.log(i+ " "+oneObject[i]);                //打印hero对象属性:name,type,x,y,width,height,nn(nn是在tmx设置的属性)的值
            }
    
            var gid = layer2.getTileGIDAt(cc.p(0,0));         //获取指定图层对应位置tile的gid,如果没有tile,则返回0
            var tileProperties = map.propertiesForGID(gid);   //从map上得到指定gid上的属性(这个属性是在tmx编辑器里对tile编辑的属性)
            cc.log(tileProperties.ff);                        //获取自定义属性
    
            var tile = layer2.getTileAt(cc.p(0,0));           //得到选定的tile并让它做action
            var action = cc.MoveBy.create(1,cc.p(50,-50));
            tile.runAction(action);
    
            layer1.setTileGID(36,cc.p(3,0));                  //在指定层上更改/设置指定位置的tile(根据tile的GID)
  • 相关阅读:
    Ubuntu 安装vsftp软件(已测试)
    linux 防火墙打开端口/屏蔽IP等
    PhpStorm+PhpStudy+xdebug 配置图解
    MongoDB 学习笔记(五)索引
    linux vi 编辑器命令
    mongodb添加用户和认证
    Linux下Nodejs安装(完整详细)
    键盘数字与字母对应的快捷键
    Webservce、WCF、WebApi的区别
    MongoDB 学习笔记(四)C# 操作MongoDB
  • 原文地址:https://www.cnblogs.com/rhythm2014/p/3912128.html
Copyright © 2011-2022 走看看