教你如何在Cocos2D中轻松导入瓦片map

    作者:课课家教育更新于: 2019-03-27 08:55:27

      刚刚入门对Cocos2D中的map还不熟悉,本篇教程将教你如何在Cocos2D中轻松导入瓦片map。上一篇教程我们讲了如何生成地图,下面我们讲一下游戏开发中的常用操作——如何将地图导入游戏中。

      第一步:将生成的文件导入resource中,如图,分别为地图和图片集

    教你如何在Cocos2D中轻松导入瓦片map_Cocos2D入门_Cocos2D学习_Cocos2D教程_课课家

      第二步:在HelloWorldLayer.h中修改代码,有一定基础的人还是比较好理解的。

      #import

      // When you import this file, you import all the cocos2d classes

      #import "cocos2d.h"

      // HelloWorldLayer

      @interface HelloWorldLayer : CCLayer

      {

      CCTMXTiledMap *tileMap;//地图文件

      CCTMXLayer *background;//地图文件的一个层

      }

      @property(nonatomic,retain)CCTMXTiledMap *tileMap;//声明tileMap

      @property(nonatomic,retain)CCTMXLayer *background;//声明background

      // returns a CCScene that contains the HelloWorldLayer as the only child

      +(CCScene *) scene;

      @end

      (注意:background是地图文件的图层,有几个图层就要声明几个CCTMXLayer)

      第三步:修改HelloWorldLayer.m文件

      1)在implentation后加入

      @synthesize tileMap;

      @synthesize background;

      2)在dealloc加入(应该是垃圾处理,因为object-c没有这种机制,要手动处理)

      - (void) dealloc

      {

      self.tileMap=nil;

      self.background=nil;

      // in case you have something to dealloc, do it in this method

      // in this particular example nothing needs to be released.

      // cocos2d will automatically release all the children (Label)

      // don't forget to call "super dealloc"

      [super dealloc];

      }

      3)替换init

      -(id) init

      {

      // always call "super" init

      // apple recommends to re-assign "self" with the "super's" return value

      if( (self=[super init]) ) {

      self.tileMap=[CCTMXTiledMap tiledMapWithTMXFile:@"desert.tmx"];//desert.tmx是导入资源名

      self.background=[tileMap layerNamed:@"Ground"];//Ground是图层名

      [self addChild:tileMap z:-1];

      }

      return self;

      }

      最后生成程序。如图

课课家教育

未登录