怎样制作基于Cocos2d-x的SLG游戏

怎样制作基于Cocos2d-x的SLG游戏,第1张

 本教程将会教大家如何使用Cocos2d-x来做一个基于tile地图的游戏,当然还有Tiled地图编辑器。(我们小时候玩的小霸王小学机里面的游戏,大部分都是基于tile地图的游戏,如坦克大战、冒险岛、吞食天地等)我们将会创建一个忍者在沙漠中找西瓜吃的小游戏。
在第一部分教程中,我将教大家如何使用Tile来创建地图,怎样把地图加到游戏中,怎么让地图跟随玩家滚动,以及怎样使用对象层。
在第二部分教程中,我将介绍如何在地图中创建可碰撞的区域,如何使用tile属性,如何制作可拾取的物体和动态修改地图,还有确保忍者不要吃撑了!
如果你还没有准备好的话,你可能需要先从《如何用Cocos2d-x30制作一款简单的游戏》系列教程开始学起,因为我们这个教程使用了大量的基本概念,而这些概念都可以从上面的教程中获取。
好了,让我们玩一玩tile地图吧!
创建工程骨架
让我们首先创建整个工程的骨架,这样可以确保今后我们需要的文件都包含进来了,并且能够跑起来。
首先工程命名为TileGame。
接下来,下载游戏资源文件。这个资源文件包里包含了以下内容:
玩家sprite。这个和《如何用Cocos2d-x30制作一款简单的游戏》差不多。
我使用cxfr这个工具制作的一些音效。
我使用Garage Band制作的一些背景音乐。(查看这篇博文获得更多的信息)
我们将会使用的tile集合--它实际上会和tile地图编辑器一块儿使用,但是,我想把它放在这里,余下的事情会变得更容易。
一些额外的“特殊”的tile,我将会在后面加以说明。
一旦你获得了这些资源,解压并把它拖到你的工程的“Resources”分组下面。(编者的话:上面的音频资源都被编者转成了mp3格式)
如果一切顺利,所有的文件应该都在你的工程里了。是时候制作我们的地图了!
使用Tile来制作地图
Cocos2d-x支持使用Tile地图编辑器创建的TMX格式的地图。(建议大家在安装的时候选择英文,本教程的Tile采用英文的)
下载完之后,直接双击运行。点击File\New,然后会出现以下对话框:
在 orientation部分,你可以选择Orthogonal。Layer format我们也选默认的 Base64(zlib compressed)。
接下来,设置地图的大小。记住,这个大小是以tile为单位的,而不是以像素为单位。我们将创建一个尽量小的地图,因此选择5050。
最后,你指定每个tile的宽度和高度。你这里选择的宽度和高度要根据你的实际的tile的尺寸来做。这个教程使用的样例tile的尺寸是3232,所以在上面的选项中选择3232
接下来,我们把制作地图所需要的tile集合导入进来。点击菜单栏上面的“map”菜单,“New Tileset”,然后会出现下面的窗口:
为了获得,点击“Browse”按钮,然后定位到工程的的Resources文件夹,选择 tmw_desert_spacingpng文件(我们刚才解压进去的),然后加到工程中去。它会基于文件名自动填充名称。然后把新图快 名称命名为“tmw_desert_spacingpng”同时,设置下面的Tile spacing和Margin都为1。
你可以保留宽度和高度为3232,因为tile的实际大小也是这么多。至于margin和spacing,我还没找到任何好的文档解释如何设置这两个值,下面是我的个人看法:
Margin就是当前的tile计算自身的像素的时候,它需要减去多少个像素(宽度和高度都包含在内)。(类比word、css的margin)
Spacing 就是相邻两个tile之间的间隔(同时考虑宽度和高度)(类比word、css的spacing)

如果你看看 tmw_desert_spacingpng,你将会看见每一个tile都有一个像素的空白边界围绕着,这意味着我们需要把margin和spacing设置为1。
一旦你选择ok,你将会看到Tilesets窗口中显示了一些tiles。现在,你可以制作地图了!在Tilesets小窗口,选择一个tile,然后再在地图上的任意位置单击,你就会看到你选中的tile出现在点中的地方了。
因此,继续制作地图吧---充分发挥你的聪明才智!确保增加至少一对建筑物在地图上,因为后面我们需要一些东西来做碰撞。
记住一些方便的快捷方式:
你可以在Tileset拾取器中拖出一个方框,一次选取多个tile。
你可以使用工具栏上的“Bucket Fill Tools”按钮(就是一个桶那个)来基于一个基准tile绘制整个地图。
你可以使用“View\Zoom In”和“View\Zoom out”来放大和缩小地图。
一旦你完成了地图的绘制工作,在Layers选项卡的层上面双击(现在可以说是“Layer1”),然后重命名为“Background”。然后点击“File\Save”并且保存文件到你的工程的资源文件夹中,并且命名为“TileMaptmx”。
后面我们将会使用这个tmx来做一些有趣的事情,好了,让我们把地图加载到游戏中去吧!
把tile地图添加到Cocos2d-x的场景中
打开HelloWorldSceneh,然后添加一些成员变量:
cpp
// Replace the init method with the following
bool HelloWorld::init()
{
if ( !Layer::init() )
{
return false;
}

std::string file = "TileMaptmx";
auto str = String::createWithContentsOfFile(FileUtils::getInstance()->fullPathForFilename(filec_str())c_str());
_tileMap = TMXTiledMap::createWithXML(str->getCString(),"");
_background = _tileMap->layerNamed("Background");

addChild(_tileMap, -1);

return true;
}
这里,我们调用TMXTiledMap类的一些方法,把我们刚刚创建的地图文件加载进去。
希望能帮到你,求采纳。

c++基础还是得要的,如果基础不扎实,在学习过程中会遇到一些很简单的问题会耽误实践,比如说数据类型转换,类的定义和使用之类。所以可以基础和cocos2d-x一起学,你看看慕课网的教程,比较详细全面,然后再慢慢深入。最主要还是实践

你可以去游资网上面看看,也可以去cocos中国网好像也有,不过都是一些素材。如果自学不了的话,不如花钱报个班,节省时间,推荐蓝鸥cocos。用最少的花费赚取最大的利益,我想谁都懂的。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12628390.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存