
cocos2d-x游戏实例
文章平均质量分 80
wq右边
这个作者很懒,什么都没留下…
展开
-
改写《魔塔》前篇05:场景滚动
如果我们多体验一下目前的游戏,就会发现勇士走起路来怪怪的。没错,感觉像是悬浮在地图上,碰到墙没有停止,行走范围也没有在格子规定的范围内。下面的工作就是把勇士规整地贴合在地图内,让它不要乱跑。先从最简单的入手,假设初始时,我们要把勇士放在地图的左下角(虽然我们已经知道并把勇士初始位置设在了左下角,即ccp(48,48),但我们还是要根据书上描述的方法进行初始位置设定)。 为了实现这个原创 2013-03-30 10:36:23 · 3338 阅读 · 0 评论 -
改写《魔塔》中篇03:重构代码之分离勇士类
写在前面:中期阶段我们只是按照书上的方式来介绍重构代码的过程,由于版本等原因,粘贴出来的代码已经不符合我们的需要。所以具体改动的代码以中期阶段项目里面的源码文件为准,项目源码下载请移步《改写《魔塔》中篇06:善后工作和注意事项(附:中期阶段项目下载)》。还有我们对原书中的项目进行了一些改动,包括用CCArray替换了CCMutableArray,增加了用于勇士初始化的getSpriteFrame方原创 2013-03-31 08:51:22 · 1680 阅读 · 0 评论 -
改写《魔塔》中篇02:重构代码之分离游戏地图类
写在前面:中期阶段我们只是按照书上的方式来介绍重构代码的过程,由于版本等原因,粘贴出来的代码已经不符合我们的需要。所以具体改动的代码以中期阶段项目里面的源码文件为准,项目源码下载请移步《改写《魔塔》中篇06:善后工作和注意事项(附:中期阶段项目下载)》。还有我们对原书中的项目进行了一些改动,包括用CCArray替换了CCMutableArray,增加了用于勇士初始化的getSpriteFrame方原创 2013-03-31 05:52:54 · 1776 阅读 · 0 评论 -
改写《魔塔》后篇01:在地图上绘制怪物
目前我们的勇士只能在空旷的地图上来回乱转,既不能与怪物进行战斗,也无法拾取物品,也不能和NPC对话等。这一篇的目的就是向游戏内添加更多的元素,丰富游戏内容,增加可玩性。 魔塔的地图上充满了强弱不一的怪物,它们都是勇士的敌人。勇士必须打败它们才能不断地探索地图的未知区域。这一篇,我们将依次讨论以下内容:如何在TiledMap上绘制怪物,如何让怪物动起来,如何让勇士遇到怪物时可以战斗,以原创 2013-04-01 09:24:27 · 2140 阅读 · 0 评论 -
改写《魔塔》后篇03:与怪物进行战斗
我们来实现勇士与怪物战斗的效果。我们希望勇士在遭遇敌人时,可以显示战斗动画,并且怪物身上显示被打击的效果,勇士头上冒出一行文字提示损失的生命值;战斗结束后,怪物从地图上消失。 首先我们准备好了一个战斗动画效果:一个舞动的刀光,即sword.png文件。我们把文件复制到我们项目的Resource目录下,打开图片,它实际起作用的是4,6,8,10,13,15,17,19,20,22帧,并原创 2013-04-01 21:06:06 · 2300 阅读 · 8 评论 -
改写《魔塔》中篇06:善后工作和注意事项(附:中期阶段项目下载)
善后工作:(1)将用到的常量放到一个公用的头文件GameConstants.h中。然后将GameConstants.h包含到MTGame中,这样所有游戏对象都可以访问这些常量了。具体内容请下载项目源码。(2)创建不同的文件夹,将类再继续分类(取决于自己的习惯,这款游戏的源码文件并不是很多,分类或不分类都可以)。注意事项:(1)我们前面曾经将所有的头文件都写在了一个叫做“MTGame原创 2013-04-01 06:40:50 · 1991 阅读 · 2 评论 -
改写《魔塔》后篇06:传送点及地图切换(附:后期阶段项目下载)
魔塔中会有地图切换的需求。我们首先在TileMap中绘制传送点。打开Tiled编辑器,选中object层,选择工具栏中的“插入对象”按钮,在地图(6,1)处创建一个对象,编辑其属性如下所示。其中,“类型”项用来区分对象是否为传送点,heroTileCoordX和heroTileCoordY定义了勇士在目标地图中出现的坐标,targetMap定义了目标地图的层数。down_floor.png是用来显原创 2013-04-06 15:13:30 · 3235 阅读 · 3 评论 -
改写《魔塔》后篇05:添加对象层
终于可以接着往下写了,这两天查找错误可算把我害惨了,下面会用红字详细说明是什么地方出了问题。 好了,我们再往游戏里添加一个NPC对象。我们先把npc.png图片复制到我们得项目中。这里我们要用到Tiled编辑器里面的添加对象层功能。在图层面板上右键选择“添加对象层”,重命名为“object”。选中object图层,在工具栏中选择插入对象,在地图的(4,10)处放置一个对象,宽和原创 2013-04-06 11:27:26 · 5004 阅读 · 0 评论 -
改写《魔塔》后篇04:添加物品和门
我们接下来会继续向游戏地图中添加更多的元素,包括各种物品和门。物品有诸如血瓶、钥匙、各种道具和装备之类,勇士可以拾取物品,并获得相应的属性提升或技能,而门只有三种:黄门、蓝门和红门,分别用对应颜色的钥匙才能打开。(1)在地图上绘制物品和门 切换到Tiled编辑器,打开游戏地图文件0.tmx。首先添加两个块层item和door,分别用于绘制物品和门。将素材item.png和door原创 2013-04-02 10:27:49 · 1945 阅读 · 0 评论 -
改写《魔塔》后篇02:添加怪物动画
怪物在地图上的位置是不变的,但它们都有对应的原地站立时的动画。大家可能想到使用前面创建的动画管理器来创建动画模板,然后播放各个怪物精灵的动画。这样做没错,但是想想就觉得麻烦:如果有100种怪物的话,难道要定义100个动画模板吗?答案是否定的。那么该如何实现怪物原地站立的动画呢?从提供的怪物图片素材可以发现:每个怪物的动作由4帧动画组成,且每帧尺寸一致,都正好是一个图块的大小。是否可以定时地更新怪物原创 2013-04-01 11:29:12 · 2032 阅读 · 2 评论 -
改写《魔塔》中篇05:重构代码之控制层
写在前面:中期阶段我们只是按照书上的方式来介绍重构代码的过程,由于版本等原因,粘贴出来的代码已经不符合我们的需要。所以具体改动的代码以中期阶段项目里面的源码文件为准,项目源码下载请移步《改写《魔塔》中篇06:善后工作和注意事项(附:中期阶段项目下载)》。还有我们对原书中的项目进行了一些改动,包括用CCArray替换了CCMutableArray,增加了用于勇士初始化的getSpriteFrame方原创 2013-03-31 15:09:29 · 1447 阅读 · 0 评论 -
改写《魔塔》前篇01:绘制最简单的游戏地图
去图书馆借了一本徐松林和黄猛编著的《cocos2d-x手机游戏开发----跨ios,Android和沃phone平台》,发现其中的例子《魔塔》使用的cocos2d-x版本太低,无法在2,.0以上的版本上运行,于是我们就来稍微改写一下他们的代码,使其能在2.0以上的版本上运行起来,鉴于是改写,所以就完全按照书上的步骤来制作,也能够熟悉一下作者制作《魔塔》的思路和过程。 我所使用的co原创 2013-03-17 15:26:07 · 5738 阅读 · 0 评论 -
改写《魔塔》前篇02:人物行走
前面一篇中我们绘制了一张简单的地图,包括地板层和墙壁层。但略显单调,因为既没有人物,地图也无法拖动。下面我们就来给地图加上可以行走的勇士。 我们将案例Resource里面的hero.png图片复制到我们的工程MTGame的Resource目录下。 然后在上一篇的基础上,修改HelloWorld.cpp的init函数,在解析tmx地图方法下面,即addChild(ma原创 2013-03-17 22:25:28 · 2623 阅读 · 2 评论 -
改写《魔塔》前篇06:订正bug
游戏到此为止还有几处bug需要我们进行订正。(1)地图上各个图块之间有一些细密的间隔。特别是场景移动时更加明显。我们将游戏截图放大,可以清楚地看到这些细线。我们可以通过设置ccConfig.h中的CC_FIX_ARTIFACTS_BY_STRECHING_TEXEL宏来解决。这个值默认的是0,将其设置为1后,编译运行。在书中有原理和分析,我们就不再描述。(2)场景发生滚动的过程中地图会抖动原创 2013-03-30 14:27:17 · 1414 阅读 · 0 评论 -
改写《魔塔》前篇03:点击按钮控制人物行走
这篇文章的代码与原书的代码会有一些不同的地方,因为我按照原书的方法进行编写后,运行会有内存访问冲突之类的错误。所以我进行了一些修改,在修改的地方我会进行指明。首先我们看一下修改后的HelloWorldScene.h文件。我们定义了一些变量和方法。#include "cocos2d.h"#include "SimpleAudioEngine.h"using namespace c原创 2013-03-30 05:48:30 · 2370 阅读 · 1 评论 -
改写《魔塔》前篇04:人物移动
在上一篇中我们点击按钮人物只是在原地朝向各个方向打转,并没有实现真正的移动,那么这一篇我们就让人物动起来。首先我们了解一下两个方法:CCSpawn和CCMoveBy。其中CCSpawn可以实现多个动作同时执行,CCMoveBy可以使精灵在指定时间内移动指定的距离。我们修改menuCallBackMove方法的代码如下:void HelloWorld::menuCallBackMov原创 2013-03-30 08:02:35 · 1927 阅读 · 0 评论 -
改写《魔塔》前篇07:碰撞检测(附:前期阶段项目下载)
前面已经初步实现了勇士在地图内的移动。这一篇我们就 开始加入碰撞检测,让勇士在碰到墙壁之后无法行走,到地图边缘时也不会走出去。 我们先来实现墙壁的碰撞逻辑。大家可以先思考一下,如何判断勇士撞到墙了?相信你已经有了一些思路了:可以在menuCallBackMove方法中判断目标地点的图块类型,如果是墙壁的话,就不让勇士移动。没错,这就是我们将要采用的方法。下面我们看一下如何用代码实现这原创 2013-03-30 16:57:45 · 1844 阅读 · 2 评论 -
改写《魔塔》中篇01:重构代码之分离场景和图层
写在前面:中期阶段我们只是按照书上的方式来介绍重构代码的过程,由于版本等原因,粘贴出来的代码已经不符合我们的需要。所以具体改动的代码以中期阶段项目里面的源码文件为准,项目源码下载请移步《改写《魔塔》中篇06:善后工作和注意事项(附:中期阶段项目下载)》。还有我们对原书中的项目进行了一些改动,包括用CCArray替换了CCMutableArray,增加了用于勇士初始化的getSpriteFrame方原创 2013-03-31 05:46:01 · 1807 阅读 · 0 评论 -
改写《魔塔》中篇04:重构代码之单例类
写在前面:中期阶段我们只是按照书上的方式来介绍重构代码的过程,由于版本等原因,粘贴出来的代码已经不符合我们的需要。所以具体改动的代码以中期阶段项目里面的源码文件为准,项目源码下载请移步《改写《魔塔》中篇06:善后工作和注意事项(附:中期阶段项目下载)》。还有我们对原书中的项目进行了一些改动,包括用CCArray替换了CCMutableArray,增加了用于勇士初始化的getSpriteFrame方原创 2013-03-31 11:38:45 · 1698 阅读 · 1 评论 -
Cocos2d-x相关博客停更通知
感谢大家对我发表的Cocos2d-x相关文章的关注和支持,从今天开始我将转向Unity3D的学习,说实话,Cocos2d-x和Unity3D都是非常棒的引擎,两者也各有自己鲜明的特点,而且Cocos2d-x还是出自中国人之手,我们更应该支持!Unity3D现如今免费化的趋势和更好的跨平台体验,使我觉得我应该把它作为我今后找工作的方向,不管它今后的趋势和前景如何,既然选择了一门技术,就要谦虚努力的去原创 2013-07-29 10:14:15 · 1653 阅读 · 1 评论