转载请注明,原文地址: http://www.benmutou.com/archives/926
文章来源:笨木头与游戏开发
 

 

好吧,我真心完全搞不懂,我现在只不过是写了3个类而已,怎么就已经到第八篇了?我感觉我说话已经够简单明了毫不唠叨了,真是奇怪。(小若:我噗,噗噗!)

 

好吧,既然现在主角已经能出现并且进行操作了,那,也是时候让怪物出场了。

 

让怪物出现太简单了,不就是写一个Monster类,然后创建刚体,让它可以和主角碰撞,然后让主角扣血或者加血么?

没错,确实就是这样的,但是,这不是重点,我想介绍的是,利用关卡编辑器来创建所有要出场的怪物,这才有意思~

 
笨木头花心贡献,啥?花心?不呢,是用心~

转载请注明,原文地址: http://www.benmutou.com/archives/926

文章来源:笨木头与游戏开发
 

神奇的TiledMap

不知道大家有没有看过我那《跑跑跑》的游戏实例教程(好吧,好像传得蛮广的,但是有不少bug),《跑跑跑》里面也有介绍到TiledMap,应该说,它主要就是介绍TiledMap来制作地图的。

 

其实TiledMap顾名思义就是格子地图,它是地图编辑器,但实际上,它是关卡编辑器,因为地图某种意义上来说,就是关卡。

 

在写《别救我》的时候,我一直在纠结,是自己写关卡编辑器呢,还是手动配置关卡呢?

然后,某天早上,我坐在花园上晒太阳(很逍遥),突然就想起了——TiledMap。

 

那么,我们来看看怎么用TiledMap给这游戏配置关卡数据吧。

 

TiledMap新手补充资料

好吧,我写的教程基本上都是入门级的,所以照顾一下不了解TiledMap的朋友。

TiledMap的官方地址是:http://www.mapeditor.org/

下载安装就可以了,没有什么特别需要注意的。

 

关卡背景参考

首先要弄清楚,《别救我》这游戏是没有地图的,好吧,它有一张循环滚动的地图,但是它不需要和玩家交互,它只管不断地滚就是了。

 

所以,我们在使用TiledMap配置关卡的时候,似乎有点纠结,因为,没有地图,没有参照物,我们要凭空去设置怪物的位置。(小若:怪物不是有图片吗?谁说没有参照物?)

 

不,我们的怪物在配置关卡的时候也不能有图片,因为怪物不是一下子就全部出现,它们不是地图。

 

那么,我们就要做一点点特别的处理了。

我们先运行游戏,然后截图,如图:

[caption id="attachment_942" align="aligncenter" width="329"]Cocos2d-x3.0游戏实例之《别救我》第八篇——TiledMap实现关卡编辑器 Cocos2d-x3.0游戏实例之《别救我》第八篇——TiledMap实现关卡编辑器[/caption]

这张游戏截图就是我们的参照物,要怎么使用呢?

 

打开TiledMap,新建一个地图文件,让它的规格为480X800:,如图:

[caption id="attachment_927" align="aligncenter" width="312"]Cocos2d-x3.0游戏实例之《别救我》第八篇——TiledMap实现关卡编辑器 Cocos2d-x3.0游戏实例之《别救我》第八篇——TiledMap实现关卡编辑器[/caption]

好,习惯性地保存一下,命名为“tg1.tmx”

 

然后,把刚刚的游戏截图拖动到TiledMap编辑器右下方的图块窗口,如图:

[caption id="attachment_928" align="aligncenter" width="372"]Cocos2d-x3.0游戏实例之《别救我》第八篇——TiledMap实现关卡编辑器 Cocos2d-x3.0游戏实例之《别救我》第八篇——TiledMap实现关卡编辑器[/caption]

最后一步,选择整份图块,然后在编辑器的地图区域点击一下,把图块添加到地图区域中,正好覆盖整个地图,如图:

[caption id="attachment_929" align="aligncenter" width="591"]Cocos2d-x3.0游戏实例之《别救我》第八篇——TiledMap实现关卡编辑器 Cocos2d-x3.0游戏实例之《别救我》第八篇——TiledMap实现关卡编辑器[/caption]

OK,这就是我们的参照物了,这仅仅是用于编辑关卡,等真正到游戏中的时候,就不需要它了。

 

开始配置怪物

为了讲解方便,我只创建2种类型的怪物,一种是加血的,一种是扣血的。

相应的,图片资源也是2张,下载地址:
 http://download.csdn.net/detail/musicvs/7392931
这是用TexturePackage打包好的图片,关于这个软件的用法,就不在这里介绍了。

 

OK,图片下载好之后,保存到Resources目录下,然后把monster.png图片拖动到TiledMap编辑器的图块窗口,属性配置就按下图的方式配吧~随便了(小若:什么叫做随便啊!)

[caption id="attachment_930" align="aligncenter" width="385"]Cocos2d-x3.0游戏实例之《别救我》第八篇——TiledMap实现关卡编辑器 Cocos2d-x3.0游戏实例之《别救我》第八篇——TiledMap实现关卡编辑器[/caption]

然后,就在地图区域随便填吧,根据你的喜好,比如我填的:

[caption id="attachment_931" align="aligncenter" width="355"]Cocos2d-x3.0游戏实例之《别救我》第八篇——TiledMap实现关卡编辑器 Cocos2d-x3.0游戏实例之《别救我》第八篇——TiledMap实现关卡编辑器[/caption]

我的艺术细胞比较发达,大家不用自卑,多练习练习就好了,嗯。(小若:你的艺术细胞是反着长的吧?)

 

好了,刚刚我们所做的一切,在游戏运行过程中都是不需要的,都是要删掉的。(小若:你是来耍我们的吧!)

 

创建怪物属性层

OK,接下来才是重点,我们要创建一个新的地图图层(是图层,不是新的地图文件)。

在TiledMap编辑器的右边,有个图层窗口,在那点击右键,然后添加对象层:

[caption id="attachment_932" align="aligncenter" width="391"]Cocos2d-x3.0游戏实例之《别救我》第八篇——TiledMap实现关卡编辑器 Cocos2d-x3.0游戏实例之《别救我》第八篇——TiledMap实现关卡编辑器[/caption]

名字,就叫做monster吧,随便了(小若:能不能别这么随意啊,你这是在写教程啊喂)

[caption id="attachment_933" align="aligncenter" width="215"]Cocos2d-x3.0游戏实例之《别救我》第八篇——TiledMap实现关卡编辑器 Cocos2d-x3.0游戏实例之《别救我》第八篇——TiledMap实现关卡编辑器[/caption]

 

添加怪物属性

好了,接下来才是重点(小若:前面说过了,说过了好吧)

注意一下,确定你现在已经选中了monster对象层(单击一下就可以了)。

 

编辑器的上面有一堆工具,我们要选择矩形工具,如图:

[caption id="attachment_934" align="aligncenter" width="701"]Cocos2d-x3.0游戏实例之《别救我》第八篇——TiledMap实现关卡编辑器 Cocos2d-x3.0游戏实例之《别救我》第八篇——TiledMap实现关卡编辑器[/caption]

然后在地图区域画一个矩形,别太大:

[caption id="attachment_935" align="aligncenter" width="495"]Cocos2d-x3.0游戏实例之《别救我》第八篇——TiledMap实现关卡编辑器 Cocos2d-x3.0游戏实例之《别救我》第八篇——TiledMap实现关卡编辑器[/caption]

然后再选回选择工具:

[caption id="attachment_936" align="aligncenter" width="386"]Cocos2d-x3.0游戏实例之《别救我》第八篇——TiledMap实现关卡编辑器 Cocos2d-x3.0游戏实例之《别救我》第八篇——TiledMap实现关卡编辑器[/caption]

现在,双击刚刚画的那个矩形,出现属性对话框,然后按照下图填写:

[caption id="attachment_937" align="aligncenter" width="326"]Cocos2d-x3.0游戏实例之《别救我》第八篇——TiledMap实现关卡编辑器 Cocos2d-x3.0游戏实例之《别救我》第八篇——TiledMap实现关卡编辑器[/caption]

名称是为了方便在程序中获取这个对象,而对象的属性,就是用来作为怪物的配置用的。

到了这里,我想,大家都知道要怎么做了(小若:嗯,不知道)

不知道的给我滚粗好吗?都第八集了,还不自觉一点。

 

好,现在按照刚刚创建矩形的方式,再创建一个矩形,这次属性如下:

[caption id="attachment_938" align="aligncenter" width="323"]Cocos2d-x3.0游戏实例之《别救我》第八篇——TiledMap实现关卡编辑器 Cocos2d-x3.0游戏实例之《别救我》第八篇——TiledMap实现关卡编辑器[/caption]

名称还是monster,id改为2,showTime随大家喜欢,showTime就是怪物隔多少秒之后再出现。

然后按照大家之前制作的怪物,一个个矩形去填好,比如我的:

[caption id="attachment_939" align="aligncenter" width="378"]Cocos2d-x3.0游戏实例之《别救我》第八篇——TiledMap实现关卡编辑器 Cocos2d-x3.0游戏实例之《别救我》第八篇——TiledMap实现关卡编辑器[/caption]

注意一下,要让矩形的左上角对准怪物的中心点(尽量就可以,不用太准确)。

 

好,保存一下。

然后,将编辑好的tg1.tmx文件复制到游戏的Resources目录下,然后,用文本编辑器打开它(建议用UltraEdit或者其他,不要用记事本),打开之后是这样的:

[caption id="attachment_940" align="aligncenter" width="855"]Cocos2d-x3.0游戏实例之《别救我》第八篇——TiledMap实现关卡编辑器 Cocos2d-x3.0游戏实例之《别救我》第八篇——TiledMap实现关卡编辑器[/caption]

很乱,没关系,找到图中标记的三个地方,把它们删掉,它就是我们作为参照物的背景层。

 

最后变成这样:

[caption id="attachment_941" align="aligncenter" width="833"]Cocos2d-x3.0游戏实例之《别救我》第八篇——TiledMap实现关卡编辑器 Cocos2d-x3.0游戏实例之《别救我》第八篇——TiledMap实现关卡编辑器[/caption]

剩下一小块。

 

好了,这就是完整的关卡配置过程,虽然最后还是要手动删一点东西,不过,这比手动配置要快多了。

如果大家没有足够的时间去编写针对自己游戏的关卡编辑器,我想,TiledMap是一个比较好的选择。

 

下一篇,我们开始要使用这个关卡配置文件去加载怪物了~

 

 

 

 
55 条评论
  • 网址导出2015-12-31-SRE空间 2016-07-16 19:29:35

    […] […]
    0回复
  • 见人不会飞 2015-08-25 11:38:26

    TiledMap中没有showtime对后面有没有影响的
    0回复
    • 博主 糟糕_树叶的mut 2015-08-26 07:43:12

      不要获取这个属性就ok了
      0回复
  • skype download for windows 7 2015-03-11 09:17:47

    skype download for windows 7

    skype free download
    0回复
  • java.com 2015-03-10 05:42:28

    download java

    java.com
    0回复
  • mozilla firefox free download 2015-03-09 12:36:53

    download firefox

    mozilla firefox free download
    0回复
  • google chrome free download 2015-03-09 05:24:46

    Google Chrome Free Download

    Download Google Chrome
    0回复
  • Vanessa Smith 2015-03-08 05:34:00

    I liked your blog very much.

    I want to thank you for the contribution.
    0回复
  • 清风 2014-12-25 17:08:19

    阿木木,为啥我快速点击放屁按钮的时候 ,Player会直接冲过底部锯齿进入下面按钮区域?慢点击的话 遇见底部横着的钢板会反弹,但是快速按 有时候 就会冲过去,陷入底部按钮区域~~求解啊
    0回复
    • 博主 糟糕_树叶的mut 2014-12-26 12:36:06

      力太大了,就冲破了,像子弹穿墙...
      0回复
      • 清风 2014-12-26 17:22:35

        那这个 该怎么避免穿透啊?
        0回复
        • 博主 糟糕_树叶的mut 2014-12-28 10:11:55

          我也没研究过
          0回复
  • yxlovemoney 2014-06-20 05:20:59

    我的TILEDmAP最新下载的,但似乎没有看到背景的源码<?xml version="1.0" encoding="UTF-8"?> 。。。。。。。。这要怎么整?
    0回复
    • yxlovemoney 2014-06-20 05:22:01

      ((((()))))嗯?代码没了,怎么不出来?
      0回复
      • yxlovemoney 2014-06-20 05:22:35

        map version="1.0" orientation="orthogonal" width="48" height="80" tilewidth="10" tileheight="10" tileset firstgid="3841" name="monster" tilewidth="10" tileheight="10" /tileset objectgroup name="monster" width="48" height="80" object name="monster" x="260" y="150" width="30" height="30"再贴
        0回复
        • 博主 糟糕_树叶的mut 2014-06-20 07:57:00

          可能你没保存,也可能打开的文件错了...如果都不是,那奇怪了。。。没有layer标签的话,那你编辑的图层不就都显示不了了
          0回复
          • yxlovemoney 2014-06-21 06:37:28

            知道了,原来是我没有把背景图一起带进项目里⊙﹏⊙‖, 只把 .tmx文件复制了过来
            0回复
  • 2014-05-19 15:59:30

    你好,我在物理世界中给精灵添加了速度,但是随着精灵越来越多,相互碰撞速度越来越快。有些直接就弹出了屏幕外,物理边框都无法挡住,这怎么办?
    0回复
    • 博主 糟糕_树叶的mut 2014-05-19 17:41:05

      我也试过,我在一个很小的空间里,创建很多物理对象,想看看挤成什么样子,结果也是挤出去了,好失望...不过这也算正常,因为物理引擎里的物体是刚体(不可形变的),所以不会被压扁,那就只好飞出去了不过我很少写物理游戏,所以没试过解决这个问题,所以不敢下断言说无法解决~
      0回复
      • 2014-05-20 10:23:41

        原来师兄也玩过
        0回复
发表评论
粤ICP备16043700号

本博客基于 BlazorAnt Design Blazor 开发