(译)如何做一个塔防游戏(cocos2d 2012-8-17)
PS:一直关注http://www.raywenderlich.com/这个网站,前几天看了他们8月17发的一个塔防游戏教程,试了一下感觉不错,搜了一下没发现没有译成中文的(不知道现在有没有),就自己尝试翻译了一下,由于本人英语水平比较烂,翻译水平肯定不怎地,各位就凑合看吧,大体能看懂就行,呵呵。
原文链接地址:http://www.raywenderlich.com/15730/how-to-make-a-tower-defense-game
截图:
这是由IOS教程团队成员Pablo Ruiz(iOS游戏开发者,InfinixSoft的共同创始人和首席运营官)投递的一个教程贴子,你可以留意他的博客,或者在Twitter上关注他。
有很好理由证明塔防类型游戏是iOS上最流行的游戏类型之一,它让玩家体验到令人难以置信的乐趣,包括终极防御以及抹杀成群的侵略者。
在本教程中,您将使用cocos2d从头开始建立自己的一个塔防游戏!
在接下来的学习中,你会了解以下内容:
.如何根据配置的间隔时间创建一波敌人。
.如何使这些敌人沿着自定义的航点行走。
.如何在地图上特定位置创建塔。
.如何使塔射击敌人。
.如何在视觉上调试敌人的航点以及塔的攻击范围。
在本教程结束时,你就会获得一个这种塔防类型游戏的坚实框架,,你将能够进一步拓展,添加新的塔型,敌人和地图!
在本教程前,您需要对cocos2d有一个基本的了解。如果cocos2d对于你来说是一个完全新的东西,那么你应该先在本网站检索一些其他的cocos2d教程看看先。
事不宜迟,让我们开始建立我们的防守!
A View from the Ivory Tower
如果你不熟悉的塔防类型,其实塔防游戏是战略游戏,你需要购买和武装塔定安放在战略要点上,以阻止一波又一波的敌人试图到达你的基地并摧毁它的。
每波敌人通常是比上一波更难,它们具有更快的移动速度以及更好的防护能力。当你在一波波敌人中能幸免于难(胜利),又或者有足够的敌人到达你的基地并摧毁它(你已经被打败了!),那么游戏结束。
这是游戏做好后的一个截图:
正如你所看到的,敌人从顶部左侧的屏幕出现,然后沿着绿色的路径到达玩家的基地。
在路的两旁,有很多的平台,玩家可以在每个平台上放置一个塔。玩家根据自己的金币要尽可能购买和放置尽可能多的塔。塔的攻击范围被画成一个白色的圆,如果敌人是塔的攻击范围内,那么塔就会射击敌人,直到敌人被摧毁,或他们离开塔的攻击范围。
Towers ‘R’ Us: Assembling the Resources
为了使你上手更快,我为你已经创建了一个启动项目。它包含一个空的cocos2d的项目,以及大部分在本教程中您将使用的素材资源。
因此,你可以到这下载启动的项目,并将其解压缩到您所选择的项目位置。
注:该项目的美术设计来自一个免费的美术设计包by Vicki,而这又是建立在另一个由花生壳工作室提供的免费的美术设计包基础上的。如果您喜欢这个美术风格,在花生壳工作室的这个家伙可供雇佣!
这个开始的项目是基于cocos2d 1.1模板建立的一个新的项目,这个新项目为您提供一个工作项目,有一个HelloWorldLayer,上面有一个标签在屏幕中间。你不会使用HelloWorldLayer在上面创建自己的UI,但是这给你一个基本cocos2d的启动项目,这样你就知道它正常工作。
在Xcode打开项目,然后编译并运行它,以确保一切工作正常。启动项目已经把“Hello World”文本从HelloWorldLayer移除,所以如果项目正常运行,你只看到一个黑色的屏幕。如果项目编译和运行,那么你的所有设置就准备好了!
在项目结构看一看。在里面的TowerDefense文件夹中,你会发现:
.所有在游戏中使用的类
.包含了所有cocos2d文件的libs文件夹
.资源文件夹包含所有的图像和声音
现在,您可以设置地图,并开始建立塔!
Someone to Tower Over Me: Placement
首先,给场景添加背景图片。打开HelloWorldLayer.m在init函数里面的“if”条件里添加以下几行代码:
现在,塔基都准备好了,下面开始建造,建立一些塔!
首先,打开HelloWorldLayer.h,添加一个属性(在右大括号后):
但是,这一切的火力如果没有坏家伙的话就体现不出它的好处了,让我们邀请了一些敌人来参加party!
Tower Politics: Enemies, Waves and Waypoints
创建的敌人之前,让我们“铺平了道路”。敌人将遵循了一系列的航点,通过这些简单地相互连接点可以定义一个路径,敌人将按照你定义的路径在你的世界中行走。敌人从第一个航点出现,搜索列表中的下一个航点,移动到这个下一个航点,如此重复,直到他们到达列表中的最后一个航点—你的基地!如果敌人到达你的基地,你会受到损害。
用iOS\Cocoa Touch\Objective-C类模板添加一个新文件代表航点列表。将该类命名为Waypoint,并把它设置为CCNode的一个子类。
将Waypoint.h的内容替换为以下内容:
最后,draw函数用于显示航点位置,绘制一条直线与下一个航点连接,这方便用于调试。游戏的发行版本不能绘制敌人行走的路径—这会使游戏变得很简单!
创建航点的列表。打开HelloWorldLayer.h,并添加以下属性:
在地图上有6个航点,这是敌人的行走路线。在你让敌人消失在你的游戏中之前,您需要添加两个辅助方法。
首先,在头文件定义你添加的方法,这样才能使其他类访问这些方法时不会出现编译器的警告。
打开HelloWorldLayer.h,在@end前,添加下面定义的方法:
Tower Wars: The Attack of the Towers
塔安放了吗?检查一下,敌人前进吗?仔细检查——它们看起来很有意思!看起来是时候修理一下那些坏蛋了!是编写智能塔代码的时候了。
每座塔会进行检查,看看是否有敌人在攻击范围内。如果有,塔将开始对敌人开火,直到以下两件事情其中有一件发生:要么是敌人走出了射击范围,要么是敌人被消灭。之后塔会重新开始寻找另一名受害者。
把塔建起来,新兵!你有一个基地需要捍卫!
首先,打开Tower.h,并进行以下更改:
唷!好了,距离你拥有一个全功能的塔防游戏,只剩下一些小细节了!音效将是一个良好的体验。尽管不可战胜以及财富无限是一件美妙的事情,但你的基地如果被敌人攻击的话还是应该受到伤害的——并且你需要限制玩家的金钱供应量。
The Shining Tower: Gotta Polish It All!
开始显示玩家的剩余血量——当玩家的生命都没有了,会发生什么!
打开HelloWorldLayer.h,并添加下面的三个实例变量:
您将看到玩家的生命在减少,直到输掉比赛。
好了,胖猫,是时候限制金币的供应量了。
大多数游戏都实现了“零和”功能,建每座塔需要花费一定资源,并给玩家有限的资源分配。你的应用程序将执行一个类似的模型,但是一个非常简单的方式。
打开HelloWorldLayer.h,并添加下面的实例变量:
到现在,最后,为做得更好,让你的游戏多几分乐趣,添加一些很酷的背景音乐( created by Kevin MacLeod)和一些声音效果(made with cxfr)!
打开HelloWorldLayer.m,并进行以下更改:
//At the top of the file:#import "SimpleAudioEngine.h" //At the beginning of getDamaged:[[SimpleAudioEngine sharedEngine] playEffect:@"laser_shoot.wav"];就这么多,你完全做到了!编译并运行游戏,并和周围的人一起玩。难道你不喜欢那些复古的声音吗?
Where To Go From Here?
这是一个示例项目,包含了上面教程中的所有代码。
如果你想继续深入这个项目,天空无极限!有很多的事情可以做,以改善这个游戏,并使其成为一个成功的游戏。这里只是一些想法:
.新的敌人类型,有不同的速度,血量等
.新型的塔,具有独特的攻击模式和成本
.设置多种导航点实现多种敌人行走路线模式
.根据不同的塔基配置有不同的关卡如果你拓展了游戏,添加任何很酷的新功能,或有任何意见或疑问,请加入论坛讨论!