ImageVerifierCode 换一换
格式:DOCX , 页数:16 ,大小:1.30MB ,
资源ID:21109214      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/21109214.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(12IOS游戏开发Cocos2dWord文档下载推荐.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

12IOS游戏开发Cocos2dWord文档下载推荐.docx

1、Cocos2d-iPhone 库目前支持 3 个默认工程模板:1)标准的 Cocos2d-iPhone 游戏工程。(这是我们最常用到的)。2)内置 Box2d 物理引擎支持的 cocos2d-iphone 游戏工程。3)内置 Chipmunk 物理引擎支持的 cocos2d-iphone 游戏工程。3. 创建并运行HelloWorldCoco2d源码位置资源文件程序源代码1)主程序入口 main在 Supporting Files 文件夹下,打开 main.m 文件:iPhone 上的应用也是以 int main(int argc, char *argv)为统一入口的。主程序 非常简单,设置了

2、一下基本的内存回收模式,便将程序的控制权传递给了应用代理程序对象 AppController。2)应用程序对象 AppController类 AppController对象通过实现 iphone OS 系统定义的应用程序接口 UIApplicationDelegate 来代理当前应用程序需要处理的各种系统事件: 放弃控制权:applicationWillResignActive 获得控制权:applicationDidBecomeActive 内存报警:applicationDidReceiveMemoryWarning 程序退出提示:applicationWillTerminate 系统时间

3、变化:applicationSignificantTimeChange 当然,在完成刜始处理之后,通过凼数 applicationDidFinishLaunching 将程序的控制权传递给 Cocos2D-iPhone 类库,Cocos2D-iPhone 接下来开始准备启劢 游戏主画面的准备:1. 获得主窗口对象(句柄)由成员 window 保存。2. 创建导演对象3. 设置“导演”对象的基本属性。4. 创建GLView5. 把GLView设置给导演6. 通过导演创建View7. 将View添加到Window中8. 由导演对象启劢幵运行“场景”。 上文涉及到得一些术语我们在后文中有详细的介绍,

4、现在知道这些对象是Cocos2D-iPhonede 程序的重要组成部件就可以了。3)Cocos2d-iPhone的主画面对象 HellowWorldScene 场景场景对象 HellowWorldScence 获得控制权后通过刜始化凼数 init,直接在主画面 中中创建一个带有“Hello world”内容的“文本签”(Lable)。将该标签的位置设置 到屏幕的中央。4. 场景(CCScene)我们假设一个只有两关的游戏:通常情况下,我们会这样设计整个游戏的流程(workflow):开场动画,可以有几个目的:简单介绍一下游戏操作讲述故事背景公司或者工作室动画LOGO进入主菜单后可以引导用户:开

5、始新游戏读取进度设置游戏 声音,文字,游戏内容设置高分排名 通常都是列表,按分数排列。帮助 操作简介退出接下来,玩家可以有多种选择,无论开始新游戏还是读取进度,游戏都会进入到预设关卡。游戏过程中,第一关胜利就进入第二关,第二关胜利则进入结尾的胜利画面(播放视频或者在背景图上显示文字),确认后进入排名画面看看本次得了多少分。如果失败了,那就会进入失败结束的画面,确定后跳转到主菜单,重新开始。可以看出,玩家玩游戏的过程就是在我们预设的画面之间进行跳转,根据玩家操作的结果(选择菜单项、消灭敌人或者被敌人杀死)跳转到不同的画面。这些构成游戏流程的画面就是我们所说的场景,图中用黑色线框表示的部分。显然,

6、不同的场景提供不同的操作,大致可以分为以下几类场景:展示类场景:播放视频或简单的在图像上输出文字,来实现游戏的开场介绍、胜利/失败提示、帮助说明等。选项类场景:主菜单、游戏参数设置等。游戏场景:这是游戏的主要内容,除了这个场景之外,其他类别的场景基本都是通用框架实现的。那么不同的场景是如何实现不同功能的呢?每个场景都是通过不同的层的叠加和组合来实现不同的功能的。因此,通常一个场景是由一个或多个层组成的。5. 层(CCLayer)层是我们写游戏的重点,我们99%以上的时间是在层上实现我们的游戏内容。如下图所示,一个简单的主菜单画面是由3个层叠加实现的:细心的读者可能已经注意到,为了让不同的层可以

7、组合产生统一的效果,这些层基本上都是透明或者半透明的。(否则我们就只能看到最上面的一个层了)层的叠加是有顺序的,如图所示,编号为1的背景层在最下层,2号在中间,3号在最上面。cocos2d也是按照这个次序来叠加画面的,处于最上层的不透明的部分会将下面的内容覆盖。这个次序同样用于编程模型中的事件响应机制。即编号3的层最先接收到系统事件(手指单击屏幕事件),然后是编号2,最后是编号1的层。在事件的传递过程中,如果有一个层处理了该事件,那么排在后面的层将不再接收到该事件。为了方便大家进行游戏开发,cocos2d从技术实现角度提供一些公用层:处理菜单用的菜单层,处理颜色显示的颜色层等。每一层又可以包含

8、各式各样的内容要素:文本、链接、精灵、地图等等。其中,精灵是游戏的重点。6. 精灵(CCSprite)精灵是整个游戏开发处理的主要对象。敌方的飞机、坦克是系统控制的精灵,玩家控制的我方飞机也是精灵,甚至随机飞过的一片云、一只鸟都是精灵。从技术上讲,精灵就是一个可以不断变化的图片。这些变化包括:位移、旋转、缩放以及图片帧的切换。所谓游戏,就是玩家操作一个或多个精灵与系统控制的精灵进行互动:近身肉搏、远程射击、对话等等。7. 导演(CCDirector)我们已经大概了解了一个游戏的整体架构,不同的场景由不同的层组成,每个层又包含精灵在上面运动。玩家玩游戏的过程就是在操作层上的精灵或者菜单项,从而在

9、不同的场景中切换。好了,有些OO编程基础的读者已经猜到导演对象的作用了。是的,按照面向对象的设计原则和反向依赖原则:精灵不应该依赖层,层不应该依赖场景,场景不应该依赖整个流程。导演对象就是整个流程的代表,他负责游戏过程中的场景切换。导演通常只有一个,因此这个对象是单例(singleton)。cocos2d框架已经预定义了该实例,无需额外创建,我们直接使用就可以。导演对象接收层对象/场景对象的请求,按照预先设计好的流程来切换场景。至此,我们可以勾勒出一个游戏的整体框架和cocos2d关键对象与之的对应关系:需要特别说明的是:任何时间,只有一个CCScene对象实例处于激活状态。该对象可以作为当前

10、游戏内容的对象的容器,对于菜单对象来说,通常属于当前场景的主层。以上就是一个游戏的主要架构。实际上,针对每一个游戏场景而言,不同场景(关卡)、每一个层(静态、动态)、每一个对象(敌人、我方、中立方)其实都很复杂。 使用 Scene 是为了:作为某个场景的总体容器对象,包括所有的内容对象(菜单、状态、游戏角色、 NPC)都属于该对象。层叠关系通过 CocosNode 的 addChild 的 Z 参数决定。 2) 实现场景切换的特殊效果。因为所有的场景切换特效都是从 Scene 的子类TransitionScene 派生的。 使用 Layer 类,就是为了处理输入问题。 1)Touch 事件处理

11、2) 动力感知处理 使用 Sprite,展示静态图片8. 画面坐标系 首先明确一下坐标系的概念:一般意义上的坐标系为笛卡尔坐标系(应该是初中平面几何开始讲的吧,高中立体几何扩展到 3 维)。不同的图形库采用不同的坐标系。iPhone 平台提供了两种绘图库:Quartz 2D 和 OpenGL ES。其中 Quartz 是 Core Graphics 绘图库的子集,OpenGL ES 是跨平台图形库 OpenGL 的嵌入设备版(Embedded System)。返两者的坐标系的原点就不一样。 Quartz 的原点在左上角:大都数图形窗口程序,Windows 和浏览器中的坐标都采用类似的坐标系。这

12、是一 种基于虚拟“画布”绘图模型的图形库,绘图挃令可以挄次序向“画布”上画下不 同的内容,后面画的内容覆盖前面画的内容(透明除外)。比较容易理解。 OpenGL ES 的原点在左下角:OpenGL ES 相对比较复杂,返实际上是一个 3D 的绘图库,挄照“状态机”模型 设计的绘图库,返个理解起来比较复杂。他丌是简单的让后者简单叠加在前者上面, 而是记录各个绘制内容的 3 维位置关系,挄照系统设定的投影关系,展示所有绘制的返些内容投影在某个特定虚拟“窗口”上的图像。Cocos2D-iPhone 是基亍 OpenGL ES 的(针对 OpneGL 的学习是值得的,主流 操作系统都支持该图形库,比如

13、说 Google 手机的 Android),所以请大家记住我们程 序中的窗口坐标系是返样的:Cocos2D-iPhone 引擎的大多数可显示对象都是从 CocosNode 对象继承过来的, 该类的理解对亍使用该图形引擎至关重要,我们从返张开始逐步开始介绍该类。今天需 要说明的是不位置有关的属性:1) anchorPoint为了将一个矩形图像精准的放置在屏幕某一个位置上,需要设置该矩形的位置参考 点(人们通常习惯亍将该参考点是、认为是该矩形的左上角那个点)。CocosNode 的该属性就是返个参考点。x,y 轴挄照 OpenGL ES 坐标系,数值采用相对自身宽、高的比例。2) Position

14、CocosNode 对象的实际 OpenGL ES 坐标。如下图说明了如何利用返两个属性来设定 CocosNode 对象的位置:图中红色矩形框的 Position 为(5,5),anchorPoint 为(0.3, 0.5)。若要选择图中 紫色大圆点 A 为 anchorPoint 则设置(0, 0),若要设置粉红色大圆点 B 为 anchorPoint 则设置(1, 1)。显然设置(0.5, 0.5)时,anchorPoint 为矩形对象的几何中心 C,这 是 Sprite 和 Texture 类对象的默认 anchorPoint 值。9. cocos2d和UIView之间跳转从cocos2

15、d到UIView从UIView返回到cocos2d10. Scene之间切换pushScene加入场景popScene退出当前场景replaceScene替换当前场景end结束当前场景以上方法都作用在director之上切换时添加过度动画动画效果有:11. CCMenuMenuItem包含:CCMenuItemFont、CCMenuItemImage、CCMenuItemLable上面代码用到的为CCMenuItemFont以下为CCMenuItemImage、CCMenuItemLable的使用方法:12. cocos2d字体CCLabelTTF *myLabel = CCLabelTTF

16、labelWithString:AppleGothic fontName: fontSize:20;myLabel.position=ccp(70, 50);self addChild:myLabel;CCLabelTTF *myLabel2 = CCLabelTTF labelWithString:HiraKakuProN-W6myLabel2.position=ccp(100, 100);myLabel2;CCLabelTTF *myLabel3 = CCLabelTTF labelWithString:HiraKakuProN-W3myLabel3.position=ccp(100, 1

17、50);myLabel3;CCLabelTTF *myLabel4 = CCLabelTTF labelWithString:MarkerFelt-ThinmyLabel4.position=ccp(100, 200);myLabel4;CCLabelTTF *myLabel5 = CCLabelTTF labelWithString:STHeitiK-MediummyLabel5.position=ccp(100, 250);myLabel5;CCLabelTTF *myLabel6 = CCLabelTTF labelWithString:STHeitiK-LightmyLabel6.po

18、sition=ccp(100, 300);myLabel6;CCLabelTTF *myLabel7 = CCLabelTTF labelWithString:TimesNewRomanPSMTmyLabel7.position=ccp(250, 50);myLabel7;CCLabelTTF *myLabel8 = CCLabelTTF labelWithString:Helvetica-ObliquemyLabel8.position=ccp(350, 100);myLabel8;CCLabelTTF *myLabel9 = CCLabelTTF labelWithString:Helve

19、tica-BoldObliquemyLabel9.position=ccp(350, 150);myLabel9;CCLabelTTF *myLabel10 = CCLabelTTF labelWithString:HelveticamyLabel10.position=ccp(250, 200);myLabel10;CCLabelTTF *myLabel11= CCLabelTTF labelWithString:Helvetica-BoldmyLabel11.position=ccp(300, 250);myLabel11;13. CCSprite精灵的加载:1)加载精灵并为精灵设置图片2)加载指定图片中的某一部分为精灵的皮肤3)使用CCSpriteBatchNode节省内存开销

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1