《Cocos2D权威指南》——第2章 你的第一款iPhone游戏—垂直射击游戏 2.1 准备工作

第2章 你的第一款iPhone游戏—垂直射击游戏

本章我们将以一个垂直射击游戏为题材,带领大家动手制作一个简单的游戏,主要目的是让大家对Cocos2D开发游戏有一个感性的认识,同时体验Cocos2D的强大以及易用性。之后的章节将引入更多的游戏元素,逐步完善此游戏。

2.1 准备工作

作为开发者,首先需要有一台iOS设备,iPhone、iPod Touch或者iPad都可以;其次要拥有开发者账号,按照第1章介绍的方法下载并安装开发者证书,这样才可以把游戏编译运行到真机上。
为什么非要真机呢?接下来向大家展示的游戏必须有真机才能测试,游戏将使用加速计控制飞机的飞行,而在模拟器里是无法处理加速计事件的。
打开Xcode,使用Cocos2D iOS模板新建一个项目,将其命名为VerticalShootingGame,单击“Next”;选择一个目录单击“Create”。编译运行将看到经典的Hello World画面。
本节我们将构建一个垂直射击游戏。模拟器的默认方向是横向(Landscape),因此需要把设备方向发成垂直方向的,同时清除模板内容,为后面的工作做准备。
步骤1 打开AppDelegate.m,找到如代码清单2-1所示的代码。
代码清单2-1 打开AppDelegate.m的代码

// Supported orientations: Landscape. Customize it for your own needs
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
   returnUIInterfaceOrientationIsLandscape(interfaceOrientation);
}

找到以下语句:

returnUIInterfaceOrientationIsLandscape(interfaceOrientation)

改成以下语句即可:

returnUIInterfaceOrientationIsPortrait(interfaceOrientation)

这时编译运行结果如图2-1所示。
步骤2 清除这个Hello World场景,同时去掉GameCenter的Achievement和Leaderboard。

1)打开HelloWorldLayer.h,使用代码清单2-2所示代码替换。
代码清单2-2 替换HelloWorldLayer.h代码

// When you import this file, you import all the Cocos2D classes
#import "Cocos2D.h"
// HelloWorldLayer
@interface HelloWorldLayer : CCLayer
{
}
// returns a CCScene that contains the HelloWorldLayer as the only child
+(CCScene *) scene;
@end

以上操作主要是删除对GameKit头文件的引用,同时移除GKAchievementViewControllerDelegate和GKLeaderboardViewControllerDelegate两个代理协议,因为在本章内容中暂时不会涉及Game Gener。
2)打开HelloWorldLayer.m,把init方法用代码清单2-3所示代码替换掉。
代码清单2-3 替换init方法代码

// on "init" you need to initialize your instance
-(id) init
{
   // always call "super" init
   // Apple recommends to re-assign "self" with the "super's" return value
   if( (self=[super init]) ) {
   }
   return self;
}

3)把GameKit相关的代理方法删除,找到代码清单2-4所示代码直接删除。
代码清单2-4 GameKit相关代理方法的待删除代码

#pragma mark GameKit delegate
-(void) achievementViewControllerDidFinish:(GKAchievementViewController *)viewController
{
   AppController *app = (AppController*) [[UIApplication sharedApplication] delegate];
   [[appnavController] dismissModalViewControllerAnimated:YES];
}

   -(void) leaderboardViewControllerDidFinish:(GKLeaderboardViewController *)viewController
{
   AppController *app = (AppController*) [[UIApplication sharedApplication] delegate];
   [[appnavController] dismissModalViewControllerAnimated:YES];
}

编译运行得到如图2-2所示结果。

好,空空如也,没关系,这正是下一个游戏的伟大起点。

时间: 2024-09-19 09:39:50

《Cocos2D权威指南》——第2章 你的第一款iPhone游戏—垂直射击游戏 2.1 准备工作的相关文章

《Cocos2D权威指南》——第1章 1.0 开始前的准备工作

第一部分 基础篇 本部分内容 开始前的准备工作 你的第一款iPhone游戏-垂直射击游戏 Cocos2D核心类 Cocos2D中的动作.特效与动画 Cocos2D中的文本渲染系统Cocos2D中的事件处理机制Cocos2D世界的声音 在Cocos2D中使用瓷砖地图 物理引擎-更真实的Cocos2D世界 第1章 1.0 开始前的准备工作 本章我们将介绍什么是Cocos2D以及有关Cocos2D的一些重要基础知识,包括如何下载与安装Cocos2D-iPhone的模板.如何安装Cocos2D-iPho

《Cocos2D权威指南》——导读

前言 为什么要写这本书 2011年10月5日,秋风萧瑟,阴雨绵绵,在这颗蔚蓝色的美丽星球上,一代传奇伟人乔布斯在亲友的陪伴下安然离去,宛若流星划过天际,空留那辆银色的奔驰SL55AMG在落叶纷飞中孤独守候着曾经的主人.这个世界从此失去了一位引领科技创新的时代领袖. 从1976年在父母的车库中创业开始,乔布斯参与.开创并改变了几个行业-PC.电脑动画.数字音乐.移动互联网.他创办了苹果公司,中途又因某些原因被苹果驱逐.然而在苹果挣扎于濒死的边缘时,他又挺身而出将苹果救活,并把它推到无人可以企及的高

《Cocos2D权威指南》——2.7 本章小结

2.7 本章小结 本章以一个垂直射击游戏为主线,循序渐进地介绍该游戏的制作过程和方法.在完成本章后,大家应该对使用Cocos2D制作游戏有一个大致的了解,比如什么是sprite.label.HUD.game loop,以及如何做碰撞检测(collision detection).在之后学习本书的过程中,我们不仅要关注具体的技术实现细节,更应该基本掌握这些核心概念以及核心类,这样在编写新游戏时,才能够独立思考.第3章开始介绍Cocos2D中的核心类,这些类几乎每一个游戏都要使用到,对这些类的进一步

《Cocos2D权威指南》——3.8 垂直射击游戏—加载游戏数据

3.8 垂直射击游戏-加载游戏数据 为了使大家对CCSprite和各相关类的使用有更加直观的印象,下面我们结合前面的游戏示例,使用精灵表单优化游戏性能,同时在游戏开始和结束时添加菜单,让玩家对游戏有更多控制权.当然,在这个示例小游戏中,这种优化是看不出差别的.但这是最佳实践,建议读者以后编写游戏都以这种方式使用精灵. **3.8.1 注释draw方法和背景 ** 首先,在Xcode中打开之前的项目中把draw方法注释掉,同时恢复先前注释掉的添加游戏背景的代码段,编译并运行,如图3-6所示. 注意

《Cocos2D权威指南》——1.6 本章小结

1.6 本章小结 本章首先介绍了Cocos2D的基础知识.包括它的一些特性.下载并安装Cocos2D模板的步骤:然后,创建了一个简单的HelloCocos2D项目:接着详细解释了HelloCocos2D项目的实现代码:最后,介绍了如何在设备上对项目进行测试.第2章我们会以一个完整的垂直射击小游戏为背景,详细介绍使用Cocos2D开发游戏的基本方法与步骤.

《Netty 权威指南》样章

声明:本文是<Netty 权威指南>的样章目录,感谢博文视点授权并发编程网站发布样章,禁止以任何形式转载此文. 第 2 章  NIO入门 在本章节,我们分别对JDK的BIO.NIO和JDK1.7最新提供的NIO2.0的使用进行详细说明,通过流程图和代码讲解,让大家体会到随着Java IO类库的不断发展和改进,基于Java的网络编程会变得越来越简单,随着异步IO功能的增强,基于Java NIO开发的网络服务器甚至不逊色于采用C++开发的网络程序. 本章主要内容包括:  传统的同步阻塞式IO编程

《Netty 实战》Netty In Action中文版 第2章——你的第一款Netty应用程序(一)

第2章 你的第一款Netty应用程序 本章主要内容 设置开发环境 编写Echo服务器和客户端 构建并测试应用程序 在本章中,我们将展示如何构建一个基于Netty的客户端和服务器.应用程序很简单:客户端将消息发送给服务器,而服务器再将消息回送给客户端.但是这个练习很重要,原因有两个. 首先,它会提供一个测试台,用于设置和验证你的开发工具和环境,如果你打算通过对本书的示例代码的练习来为自己将来的开发工作做准备,那么它将是必不可少的. 其次,你将获得关于Netty的一个关键方面的实践经验,即在前一章中

《Cocos2D权威指南》——第3章 3.0 Cocos2D核心类

第3章 3.0 Cocos2D核心类 本章主要分析第2章代码示例,同时向大家展示构成Cocos2D的核心类如何组织在一起并构成一个完整的游戏.几乎任何一款Cocos2D游戏中都会用到这些类,所以了解它们的作用.属性和方法,以及如何使用这些类,有助于我们开发出更好的游戏.掌握了这些基本知识,大家会发现Cocos2D并没有想象的那么难:而且即使只用这些类,也可以创造出很有意思的游戏.掌握这些游戏构建的关键类和关键概念之后,我们在开始一个新的游戏项目时会更加得心应手.

《Cocos2D权威指南》——3.4 CCLayer层类

3.4 CCLayer层类 一个CCLayer是屏幕上可绘制的区域,可以是半透明的,这样就可以看到CCScene下面的其他层.在游戏编程的过程中,开发者大部分时间都需要跟层打交道.如图3-5所示,一个游戏场景包含3个层,背景层.动画层和菜单层. CCLayer直接继承自CCNode,作为精灵节点和其他节点的容器,它同时可以接收触摸输入和加速计输入的信息,前提是上述接收功能已经启用.3.4.1 CCLayer类的作用 CCLayer类的作用主要有三个. (1)其他子节点的容器和组织者 例如对一个层