标签:
上一章我们创建了游戏的菜单场景,并讲解了一些基础元素的创建,接下来这章,我们会先让大家了解一些接下来游戏开发中需要用到的辅助工具,然后再教大家创建另一个游戏场景,并跳着到该场景中来。
在开始真真的写代码之前,其实早该讲讲以下这些辅助工具的。这些工具可以让我们更好更方便的实现程序中的某些功能,比如地图编辑工具、粒子编辑工具 等。尽管这些工具在我之前的教程中已经不厌其烦的讲了好多次了,但是为了做到真正的初学者教程,本小节还是先来简单的介绍下这些工具的使用方法,毕竟接下 来的章节中我们会陆续的用到这些工具。还是那句话,希望对初学者有所帮助。
TexturePacker 是一款图片编辑打包工具,它能将我们游戏中用到的多个图片资源打包成一张大图,这样加载图片不仅能节省空间,而且还能提升速度。
TexturePacker 的下载可以到它的官方网站进行下载。
Texturepacker工具的使用很简单,它的每个设置项都给出了相应的提示信息,这里我们打包的步骤如下:
在 Quick 中要想使用这种被打包的资源,那么我们首先需要把它载入精灵帧缓存。以下函数能实现这一目的:
1
|
display.addSpriteFrames(数据文件名, 材质文件名) |
精灵帧缓存 SpriteFrameCache 是用来存储精灵帧 SpriteFrame 的,SpriteFrame 精灵帧对象可以用来追踪所有精灵帧缓存中精灵的信息。缓存精灵帧有助于提高程序的效率。其中 SpriteFrameCache 是一个单例模式,它不属于某个精灵,是所有精灵共享使用的。
addSpriteFrames 方法将从传人的 plist 列表文件的元数据部分获取各个纹理的纹理名,并将它载入到纹理缓存中,然后解析它属性列表里的文件。
当我们要使用精灵帧来创建一个精灵时,我们可以像前面创建普通精灵一样使用newSprite方法。但为了和直接用文件中的图片创建精灵区分开 来,Quick 中规定:如果图片名以“#”字符开头,那么该图片将从SpriteFrameCache中读取,如果没有“#”开头,才表示直接从文件中读取。
关于打包文件的实际应用,我们后面会给出例子。这里你可以先把资源载入精灵帧缓存,如下在 MyApp:run() 方法中添加以下代码:
`
1
|
display.addSpriteFrames( "image/player.plist" , "image/player.pvr.ccz" ) |
`
TiledMap 编辑器是一款地图编辑工具,我们可以利用它把单个单个的图块(或称之为瓦片)拼接成一幅完整的地图,我们也称之为瓦片地图编辑器。
TiledMap 编辑器制作的地图为 TMX 格式的文件,该文件可以被 Cocos2d-x(Quick)很好的支持。其官方下载地址为:http://www.mapeditor.org/。
本游戏中,我们将用TiledMap编辑器编辑本游戏的部分地图,具体的方法我们在用到时在详细讲解。
本游戏中,后面我们会用粒子效果来渲染游戏场景,使游戏更加炫丽,所以下面我要说说这个粒子编辑器是个咋回事!
因为游戏中往往需要有到一些特殊的粒子效果(如烟花、爆炸、下雪等等),所以粒子系统这样的程序模块便在各类游戏引擎中孕育而生,Cocos2d- x(Quick)也不例外,它为我们提供了强大的粒子系统。只不过Cocos2d-x(Quick)中的粒子系统有非常多的属性需要设置和调节,使用起来 还是有些复杂。
所以为了能偷懒,程序员们开发了粒子编辑器,它可以很方便的编辑出漂亮的粒子效果,让你勉去手动设置粒子属性的过程。
常用的粒子编辑器也有两种,一种是ParticleDesigner,另一种是ParticleEditor(之前我也写过一篇关于如何使用ParticleEditor编辑器相关的文章,可供大家可以参考)。
教程中我们所用的粒子编辑器是ParticleDesigner,下面是我用该编辑器调出的一个粒子效果。
注意:如果想要调出满意的粒子效果,那么需要了解整个粒子系统的组成原理,所以想自己试试的童鞋可以参考《粒子效果》一文.
以上我们就粗劣的介绍完了开发中将用到的辅助工具,接下来我们来看看如何创建新的游戏场景。
在 Sublime 编辑器中新建一个 lua 文件是非常容易的,只需要在菜单栏中选择 File-》New File 就可以新建一个文档,然后再把这个文档以 .lua 的形式保存在 src ? app ? scenes 目录下就可以了。此处我们新建一个 lua 文件,取名为 GameScene。
这个 GameScene 场景将是本游戏的逻辑场景,飞行游戏的所有逻辑部分的代码都将在本场景中实现。所以下面我们就来开始构建这样的一个游戏场景吧。
首先,根据 MainScene.lua 文件的构成形式,我们依葫芦画瓢在 GameScene.lua 文件中加入如下的一段代码,该段代码将为我们创建一个空白的游戏场景。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
local GameScene = class ( "GameScene" , function() return display.newScene( "GameScene" ) end) function GameScene:ctor() end function GameScene:onEnter() end function GameScene:onExit() end return GameScene |
添加好以上代码后,一个简单且背景黢黑的 GameScene 场景就算创建好了。
关于 GameScene 的代码我们暂时就这样子,在下章分析完 GameScene 的构成后我们再着手编写。下面我们先来跳转到 GameScene 场景看看跳转效果。
我们知道,游戏运行的第一个游戏场景是 MainScene 场景,所以,现在请打开 MainScene.lua 文件,让我们来添加代码使它能跳转到 GameScene 场景,添加的位置是在点击开始按钮时触发的 onButtonClicked 函数中。代码如下所示:
1
2
3
4
|
cc.ui.UIPushButton. new ({ normal = "image/start1.png" , pressed = "image/start2.png" }) :onButtonClicked(function() app:enterScene( "GameScene" , nil, "SLIDEINT" , 1.0) end) |
enterScene 方法我们曾在讲解 MyApp.lua 文件时提到过,当时只是使用该方法简单的进入场景而已,而此处我们则添加了特别的切换效果。并没有深入的解析,下面我们就来看看enterScene方法的定义,如下所示:
1
|
enterScene(sceneName, args, transitionType, time , more) |
它的参数分别是:
所以,app:enterScene("GameScene", nil, "SLIDEINT", 1.0)
表示从当前场景切换到 GameScene 场景,切换的过渡动画是 SLIDEINT 类型(新场景 GameScene 从顶部进入,同时现有场景 MainScene 从底部退出),整个切换过程用时1秒。
transitionType可以是如下的一些类型:
此时刷新 player,我们就会看到跳转场景的效果。
Quick-Cocos2d-x初学者游戏教程(五) --------------------- 辅助工具和跳转场景
标签:
原文地址:http://www.cnblogs.com/dudu580231/p/4796697.html