iOS 5 cocos2d 游戏开发实战:第4章 你的第一个游戏

╄→尐↘猪︶ㄣ 提交于 2019-11-27 08:18:27

       在本文中,你将编写专属于你的第一个完整的游戏。它不会为你赢得什么奖项,但从中可以学到cocos2d基本要素的使用方法。我会逐步进行介绍,你还能学到一些Xcode的使用方法。

这个游戏是著名的“Doodle Jump”游戏的倒版,它被贴切地命名为“DoodleDrop”。玩家通过旋转屏幕尽可能躲避落下的障碍物。游戏的最终版本如图4-1所示,你可以在此提前了解一下将在本章创造的作品。

 


 

图 4-1 “DoodleDrop”游戏的最终版本

4.1 按部就班地创建项目

      现在就打开Xcode,我将逐步引导你创建你的第一个cocos2d游戏。在Xcode中,选择File | New Project…,然后选择cocos2d Application模板,如图4-2所示。Xcode会要求你为新项目输入一个名称,这里输入DoodleDrop。如果需要,请把它存储到一个合适的位置。由于Xcode会自动创建一个名为DoodleDrop的子文件夹,因此不必多此一举。

图 4-2 通过cocos2d Application模板创建项目

       此时Xcode的项目视图应如图4-3所示。取决于你所用的cocos2d和Xcode版本,可能还会有更多的文件,或者组的名字可能会有区别。 我已展开Classes和Resources组,它们分别用来添加源代码和游戏资源文件。任何非源代码文件都被当做资源,无论是图像文件、声音文件、文本文件还是plist文件。分组并不是必需的,但如果坚持对同类文件进行分组,那么这将为理清项目带来很大便利。

图4-3 开始创建游戏!当前的DoodleDrop项目基于cocos2d的HelloWorld项目模板。确保将相应的后续文件添加到了Classes和Resources组中,以保持游戏项目的井然有序

         接下来要面临一个抉择:是先从已经创建好的HelloWorldScene(没准在后面会重命名它)开始工作呢,还是要通过额外的步骤创建你自己的场景并替代HelloWorldScene呢?我选择后者,因为最终你还是得加上新的场景,不如借着这个过程摸清门路。 请确认Classes组已被选中,然后选择菜单File | New File…,或者右击Classes文件夹,从弹出菜单中选择Add | New File…,打开New File对话框,如图4-4所示。由于cocos2d为最重要的节点提供了类模板,不加以利用难免可惜。在cocos2d的User Templates中,选择CCNode class并单击Next,确认它已设置成CCLayer的子类。然后再次单击Next,这会打开如图4-5所示的保存文件对话框。

图4-4 添加新的CCNode派生类的最好做法就是利用cocos2d提供的类模板。 在此建立新场景时,我们让CCNode类作为CCLayer的子类


图4-4 添加新的CCNode派生类的最好做法就是利用cocos2d提供的类模板。 在此建立新场景时,我们让CCNode类作为CCLayer的子类图4-5 命名新场景并确认已将其添加到合适的Target中

        我更倾向以通常的方式,按类的功能来命名类。这里我们使用GameScene.m。DoodleDrop的游戏进程将在这个场景中展开,所以这个名字听上去还算合适。记住一定要选中DoodleDrop复选框。如果使用的是Xcode 3,还必须选中Also create“GameScene.h”(同时创建“GameScene.h”)复选框。Targets用于指定Xcode中创建不同版本可执行文件的方式。例如,游戏的iPad版本通常创建为单独的Target。在此情况下,我们只有一个Target,然而一旦创建好iPad的一个Target,就要确保某些情况不会发生,比如iPad的高分辨率图像不会意外加入到iPhone或iPod Touch Target中。

注意: 不检查Add to targets复选框组会导致各种各样的问题,从编译错误到“文件未找到”错误,或是因为文件没有被添加到需要该文件的Target而导致的游戏程序崩溃。抑或是文件添加到根本不需要此文件的Target而造成空间浪费,例如在普通的iPhone或iPod Touch中加入iPad和iPhone 4的高分辨率图像。

       此时此刻,我们的GameScene类还是一片空白。我们要做的第一件事就是为它添加“+(id) scene”方法,从而将它设置为场景。这里添加的代码与第3章中讲过的没有本质差别,只是层的类名更改了一下。任何类中几乎都需要“– (id) init”和“– (void) dealloc”方法,所以很有必要现在就加上它们。我是个很谨慎的程序员,所以我决定加上第3章中介绍过的日志记录语句。编辑后的结果分别为程序清单4-1中的GameScene.h和程序清单4-2中的GameScene.m。

程序清单4-1 加入Scene方法的GameScene.h


#import <Foundation/Foundation.h> 
#import "cocos2d.h" @interface GameScene : CCLayer 
{ 
} 
+(id) scene; @end 


程序清单4-2 加入Scene方法和标准方法(包括日志记录语句)的GameScene.m


#import "GameScene.h" 
@implementation GameScene 
+(id) scene 
{ 
CCScene *scene = [CCScene node]; 
CCLayer* layer = [GameScene node]; 
[scene addChild:layer]; 
return scene; 
}

-(id) init 
{ 
if ((self = [super init])) 
{ 
    CCLOG(@"%@: %@", NSStringFromSelector(_cmd), self); 
} 
return self; 
} 
-(void) dealloc 
{ 
     CCLOG(@"%@: %@", NSStringFromSelector(_cmd), self);
 // never forget to call 
[super dealloc] [super dealloc]; 
} @end 


现在你可以安全地删除HelloWorldScene类了。当被询问时,选中Also Move to Trash选项,将文件同时从Xcode项目和硬盘中删除。同时选中这两个文件,然后选择Edit | Delete或从右击菜单中选择Delete。删除了HelloWorldScene类之后,必须修改DoodleDropApp- Delegate.m,将任何使用HelloWorldScene的地方改为使用GameScene。程序清单4-3标出了对#import与runWithScene语句所做的必要修改。将设备方向改成了Portrait模式,因为我们的游戏最适合在此模式下运行。

程序清单4-3 修改DoodleDropAppDelegate.m文件,使用GameScene类而不是Hello- WorldScene类


// replace the line #import “HelloWorldScene.h” with this one: #import "GameScene.h" - (void) applicationDidFinishLaunching:(UIApplication*)application 
{ 
… 
// Sets Portrait mode 
[director setDeviceOrientation:kCCDeviceOrientationPortrait]; 
… 
// replace HelloWorld with GameScene 
[[CCDirector sharedDirector] runWithScene: [GameScene scene]]; 
}


     编译并运行,你会看到一个空白场景。你成功了!如果出现任何问题,请将该项目与随书附带的DoodleDrop01项目进行对比。
注意: 从cocos2d 0.99.5版本开始,cocos2d Xcode项目模板中增加了一个名为GameConfig.h的文件。如果用某个cocos2d Xcode项目模板创建了一个新项目,但是发现Portrait模式不能工作,可能是因为游戏被默认设为自动旋转。如果在GameConfig.h中看到语句: #define GAME_AUTOROTATION kGameAutorotationUIViewController 需要把它改为以下这行语句以禁用自动旋转: #define GAME_AUTOROTATION kGameAutorotationNone


本文摘自:iOS 5 cocos2d 游戏开发实战(第2版)

书 号:

9787302303039

出 版 社:

清华大学出版社

定 价:

59.80元

出 版 日 期:

2012-10-01

作 者:

()伊特海姆()勒夫

译 者:

同济大学苹果俱乐部

系 列书 名:

清图程序设计系列

开 本:

16 开

页 数:

456

印 刷 时 间:

2012-10-15

字 数:

694千字

版 次:

2

包 装:

平装

印 次:

1

样章试读:

http://www.tupbook.com/BookView.aspx?id=104

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!