`
bsr1983
  • 浏览: 1117624 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

cocos2d第一个游戏

 
阅读更多

 

4 你的第一个游戏

4.1 按部就班地创建项目

       任何非源代码文件都被当做资源,无论是图像文件、声音文件、文本文件还是plist文件。分组并不是必须的,但如果坚持对同类文件进行分组,那么这将为理清项目带来很大便利。

4.2 添加Player Sprite

       注意:iOS游戏首选的图像文件格式是PNG(Portable Network Graphic,便携式网络图像),这是一种压缩文件格式,然而与JPG文件不同的是,PNG采用了无损压缩,保留了原始图像所有像素。你也可以保存不经压缩的JPG文件,不过对于同一个图像,PNG文件的大小明显要比未经压缩的JPG文件小。但是这只会影响应用的大小,而不会影响纹理对内存(RAM)的使用。

       注意:

       记住,在iOS设备上文件名是区分大小写的。如果你视图加载Alien.pngALIEN.PNG,在模拟器上会成功加载文件而在iOS设备上则不会,因为文件真正的名字是alien.png,字母全部小写。这就是坚持统一的命名约定——例如强制所有文件名使用小写字母——的意义所在。

       注意:无论如何都要尽量避免使用固定的位置值。如果你只是把玩家为之设为(160,32),此时你就做了两个本该避免的假定。第一,假定了屏幕的宽度为320像素,但并不是每个iOS设备都是这样的。第二,你假定了图像的高度是64像素,然而那也是可能会改变的。一旦你开始像这样做假定,整个项目过程中你就会逐渐形成这样的习惯。

       用很多代码来定位对象,但长远来看这样制作会节约大量时间。可以将项目部署到不同的设备,也可以使用不同尺寸的图像,无论如何项目都会正常运行。

4.3 加速剂输入

       与其他编程语言(如javaC++C#等)不同,像player.position.x+=value这样的语句对Objective-C中的属性是不起作用的。问题出在Objective-C中属性的工作方式以及Objective-C所基于的C语言的赋值机制。

       player.position.x语句实际上是调用了positiongetter方法[player position],这意味着你实际上获得了一个临时的position值,并试图改变这个临时的CGPoint对象的x成员变量。但之后这个临时的CGPoint对象会被丢弃。于是positionsetter方法[player setPosition]就不会自动被调用了。所以只能直接对player.position进行赋值。

4.4 首次测试运行

       如果尚未在Xcode中为这个项目安装你的开发授权,将会产生CodeSign错误。在iOS设备上运行程序时需要代码签名证书。

4.5 玩家速度

       实现加速与减速概念不在于直接修改玩家的位置值,而是使用单独的CGPoint变量作为速度矢量。每次接收到一个加速计事件时,速度矢量就加上从加速计得到的输入。当然,这意味着我们得把速度限制在一个任意的最大值内,否则减起速来就要花点时间了。不管有没有接收到加速计的输入,在每一帧都把速度加到玩家位置上。

       注意:为什么不使用动作来移动玩家精灵呢?无论何时你需要频繁地——如,每秒数次——改变对象的速度或方向,使用move动作都不是一个好的选择。动作适用于相对使用周期较长的对象,所以频繁创建新对象在分配释放内存上增加了额外开销,这会使游戏性能大幅下降。

       更糟糕的是,如果不为动作留出一点时间,动作是不会执行的。这就是在每帧添加新动作来替换前一个却没有任何效果的原因。

       注意:imageWidthHalved的是用contentSize的宽乘以0.5而不是除以2得到的。这是个有意的选择,而且两者结果相同,因为任何除法都可以被改写成乘法的形式。

       update方法在每一帧都会被调用,而在每帧都调用的代码应该以最高速度运行,并由于iOS设备的ARM CPU不支持硬件上的除法运算,因此乘法运算通常要更快一些。

4.6 添加障碍物

       获取图像尺寸最简单的方法就是创建一个临时的CCSprite对象。

       将初始化精灵和配置精灵分开处理的原因在于:游戏总会结束,之后游戏将被重置。最为高效的做法就是将所有游戏对象移动到它们的初始位置。然而,一旦游戏趋于复杂,这种做法将不具备可行性。最终,最简单的做法就是以玩家为代价重新加载全部场景。

       提示:

       如果不是绝对必要的话,为了节约CPU资源,最好不要在for或其他循环语句中使用方法调用作为循环条件。

4.7 碰撞检测

4.8 得分标签

       CCLabel只在频繁更改其字符串时才会运行缓慢。如果一次创建一个CCLable对象并永不更改,那么它使用起来就会和相同尺寸的CCSprite对象一样快。

4.9 CCBitmapFontAtlasHiero简介

       注意:在游戏中使用位图字体是个很棒的选择,但位图字体也有很大的不足之处。任意位图字体的大小都是固定的。如果需要同一字体的不同字号,可以缩放CCBitmapFontAtlas——但这样会损失图像质量。你还可以另外创建一个与原来字体大小不同的字体文件,但是这样会使用更多内存,因为即使只有字体大小不同,每个位图字体也都有其特有的纹理。

       注意:如果使用CCBitmapFontAtlas显示字符,当某些字符在.fnt文件中无效时,将会跳过这些字符而不显示它们。

4.10 添加音频

       cocos2d中播放音频文件最好,同事也是最简单的方法是使用SimpleAudioEngine。音频文件支持并不属于cocos2d的组成部分;它是CocosDenshion的主要部分,与物理引擎一样,同属于cocos2d的第三方插件。因此你必须在CocosDenshion音频功能时添加相应的文件。

       至于音乐,MP3文件是首选。注意,一次只能在后台播放一个MP3文件。

4.11 移植到iPad

       因为所有的位置坐标都考虑到了屏幕的尺寸,所以将游戏放大到iPad的大屏幕上运行应该不会有问题。

4.12 本章小结

<!--EndFragment-->

分享到:
评论

相关推荐

    cocos2d 切水果游戏

    【cocos2d 切水果游戏】是一款基于cocos2d和box2d游戏引擎开发的手机游戏,模仿了流行的“切西瓜”玩法。在这个游戏中,玩家需要通过滑动屏幕来切割屏幕上飞过的各种水果,尽可能多地得分,同时避免切割到炸弹等负面...

    Cocos2d-x 3.x游戏开发实战pdf含目录

    Cocos2d-x 是一个开源的、跨平台的2D游戏开发框架,广泛应用于iOS、Android、Windows等多平台的游戏开发。3.x版本是其发展中的一个重要阶段,引入了多项优化和新特性,旨在提高开发效率和性能。 本书首先会介绍...

    Cocos2d-x 游戏资源(图片、XML、TXT等)打包加密 之 解密读取

    在Cocos2d-x中,我们可以使用工具如cocos console或第三方工具如DragonBones来创建一个资源包(.plist和.bin文件),将图片、XML、TXT等文件整合在一起。这个打包过程可以有效地减少游戏启动时的加载时间,同时为...

    cocos2d-x2.0 射击游戏实现 沈大海cocos2d-x教程实例

    在游戏开发领域,cocos2d-x是一个广泛使用的2D游戏开发框架,尤其适用于跨平台的游戏开发。本教程将深入探讨如何利用cocos2d-x2.0版本实现一款简单的射击游戏。教程由知名讲师沈大海指导,通过实例教学,帮助开发者...

    cocos2d-iphone游戏开发pdf

    第四章《你的第一个游戏(修正错误)》是实践环节,通过一个简单的游戏实例,讲解如何编写游戏逻辑,处理碰撞检测,以及调试和优化代码。这个章节强调了错误处理和调试技巧,这对于任何开发者来说都是至关重要的。 ...

    Cocos2d-x《开心斗地主》棋牌类游戏源码

    Cocos2d-x是一个跨平台的2D游戏开发框架,由C++编写,支持iOS、Android、Windows等多个操作系统。它以其高效、易用的特点,深受游戏开发者喜爱。 在这款游戏中,你可以看到Cocos2d-x的强大功能被充分展示。首先,...

    cocos2d 游戏连连看代码

    `Default.png`是应用的启动界面,是用户首次打开游戏时看到的第一个画面。`Resources`目录下包含了游戏的所有资源文件,如图像、音频、纹理等,这些是构建游戏视觉效果的关键部分。开发者可以在这个目录中找到连连看...

    Cocos2D权威指南

    第1章 开始前的准备工作 1 第2章 你的第一款iPhone游戏:垂直射击游戏 38 第3章 Cocos2D核心类 69 第4章 Cocos2D中的动作、特效与动画 152 第5章 Cocos2D中的文本渲染系统 229 共19章

    cocos2d-x3.2《魔塔》游戏源码

    《cocos2d-x3.2《魔塔》游戏源码》是一款基于cocos2d-x 3.2版本开发的2D角色扮演游戏,它展示了如何利用这一强大的游戏引擎来构建一个完整的游戏项目。cocos2d-x是一个开源的游戏开发框架,支持多种平台,包括iOS、...

    Cocos2d-Java跨平台游戏引擎

    Cocos2d-Java跨平台游戏引擎 Cocos2d-Java是基于Cocos2d-X,使用Java语言来开发Cocos2d跨平台游戏的引擎,和-lua,-js的api风格相近,方便快捷,便于习惯Java的开发者开发跨平台游戏。 知识点一:Cocos2d-Java的...

    学习Iphone 和 Ipad cocos2d 游戏开发

    设置好项目后,可以创建第一个Scene,这是Cocos2d中的主要游戏屏幕。 3. **理解场景和层**:在Cocos2d中,Scene是游戏的主要容器,类似于电影的场景。Layer则用于组织游戏的不同部分,比如游戏逻辑、用户界面等。你...

    Cocos2D-x游戏开发之音乐播放

    在Cocos2D-x游戏开发中,音乐播放是至关重要的一个环节,它为游戏增添了氛围,增强了用户体验。Cocos2D-x是一个用C++编写的开源游戏开发框架,广泛应用于移动平台,如iOS、Android、Windows Phone等。本文将深入探讨...

    cocos2d-x手机游戏开发 源代码

    2. **第一个项目**:引导读者创建并运行第一个简单的Cocos2d-x项目,介绍基本的HelloWorld示例。 3. **绘图与图像处理**:讲解如何绘制2D图形、精灵(Sprite)以及使用Tiled地图编辑器创建游戏地图。 4. **动画和...

    Cocos2d-x实战C++卷关东升著完整版pdf

    Cocos2d-x是一个开源的、跨平台的2D游戏开发框架,广泛应用于iOS、Android、Windows等多个操作系统。本书以C++语言为主要编程工具,详细介绍了如何利用Cocos2d-x进行游戏开发。 首先,Cocos2d-x的基础知识是必须...

    Cocos2d-x游戏开发实战精解-教学PPT

    这部分会讲解Cocos2d-x的项目结构,如何搭建开发环境,并引导读者进行第一个Hello World项目的创建,从而对Cocos2d-x有一个基本的认识。 接下来,"Cocos2d-x基础知识学习"部分会详细讲解Cocos2d-x的基本概念,包括...

    Cocos2d-x 雷电游戏

    Cocos2d-x 是一个跨平台的游戏开发框架,广泛应用于2D游戏的制作,尤其在移动设备上表现卓越。它提供了丰富的功能,如图形渲染、动画处理、物理引擎支持、音效管理等,使得开发者可以轻松构建各种类型的游戏,包括...

    cocos2d-x默认第一个模板

    "默认第一个模板"通常是指cocos2d-x新项目创建时提供的基础结构。这个模板包含了基本的游戏入口、主循环、渲染循环以及一些基本的示例代码,帮助开发者快速上手。例如,`HelloWorldScene`类是项目中的核心场景,包含...

    cocos2d-x API中文文档

    cocos2d-x是一个基于MIT许可证的开源游戏引擎,它以快速、简单且功能强大的特性闻名,允许开发者使用C++、Lua和JavaScript进行跨平台开发,支持包括iOS、Android、Windows Phone、Blackberry以及Tizen在内的多个平台...

    精通COCOS2D-X游戏开发进阶卷

    《精通COCOS2D-X游戏开发进阶卷》是一本深入探讨Cocos2d-x游戏引擎的专业书籍,旨在帮助开发者提升在Cocos2d-x框架下的游戏制作技能。Cocos2d-x是一款广泛使用的开源游戏开发框架,它基于C++,同时也支持Lua和...

    经典版本 方便下载 源码 旧版本 3.8 官网找不到了 cocos2d-x-3.8.zip

    cocos2d-x 是一个跨平台的游戏开发框架,它基于C++,同时提供了Lua和JavaScript的绑定,让开发者可以方便地在多种操作系统上创建2D游戏、演示程序和其他图形交互应用。这个“cocos2d-x-3.8.zip”压缩包包含的是cocos...

Global site tag (gtag.js) - Google Analytics