博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《Cocos2D权威指南》——第2章 你的第一款iPhone游戏—垂直射击游戏 2.1 准备工作...
阅读量:7045 次
发布时间:2019-06-28

本文共 2335 字,大约阅读时间需要 7 分钟。

第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。

image

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所示结果。

image

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

转载地址:http://vjeal.baihongyu.com/

你可能感兴趣的文章
Spring Cloud--Honghu Cloud分布式微服务云系统—组件化
查看>>
质数的多种实现方法
查看>>
8招打造高质量社群,就是这么简单!
查看>>
干货来袭丨资产可用性真的是终极目标吗?
查看>>
今日博客
查看>>
【短信插件】 NiuShop单商户如何调用短信验证码接口
查看>>
MapReduce 调优
查看>>
【Infragistics教程】Sketch Prototypes的可用研究和用户视频
查看>>
用友云服务治理平台 助力企业微服务架构落地
查看>>
linux appear packet loss solution
查看>>
结构体大小的计算以及内存对其原则和修改默认对齐数
查看>>
写给对独立开发的建议
查看>>
Struts 2 + Spring 2.0 + Hibernate 3.0整合笔记(转)
查看>>
OpenSSL生成v3证书方法及配置文件
查看>>
我的友情链接
查看>>
MYSQL-innodb性能优化几个点
查看>>
javascript中new操作符
查看>>
prefok和worker模式
查看>>
MYSQL函数(一)
查看>>
这几年养成的几个比较好的工作习惯
查看>>