`
bsr1983
  • 浏览: 1101200 次
  • 性别: 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权威指南

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

    Cocos2d x手机游戏开发与项目实战详解.part3

    第一部分:基础篇[1] 第一章主要是手机游戏概述,包括游戏概述、手机游戏类型和开发平台的分析;  第二章介绍手机游戏的策划,包括分析玩家需求,编写策划文案,游戏原型的实现。  第三章介绍C、C++编程基础,对于...

    Cocos2d-x手机游戏开发必备C语言基础

    资源名称:Cocos2d-x手机游戏开发必备C 语言基础教程内容:课时1 课程介绍课时2 1.C 概述课时3 2.1第一个程序编写过程课时4 2.2解释说明第一个C 程序课时5 2.3使用Visual Studio运行并调试课时6 3.1.1数据类型、...

    cocos2d教程【15个文档】

    第1章-介绍cocos2d 第2章-开始学习 第3章-基础知识 第4章-你的第一个游戏 第4章-你的第一个游戏(修正错误) 第5章-游戏构成要素 第6章-深入了解精灵(Sprite) 第7章-横向滚屏射击游戏 第8章-完成滚屏射击游戏-1 第9章-...

    cocos2d-x手机游戏开发.part6.rar

    cocos2d-x手机游戏开发,是一本介绍cocos2d游戏引擎,已经如何扩平台开发手机游戏的书。由于上传大小的限制,分成6个压缩包,不好意思。第6卷。

    Cocos2D-iPhone游戏开发教程打包整理-(泰然论坛整理)

    (译)如何使用cocos2d来制作一个塔防游戏:第一部分.pdf cocos2d 2.0 添加遮罩.pdf iOS Code Signing解惑.pdf iPhone上面的现实增强(Augmented Reality)入门教程.pdf OpenGL ES2.0 – Iphone开发指引.pdf ...

    cocos2d-iphone 2.1 第一部分

    解压,放在一个你容易找到的位置。但是最好别是桌面。(我是放在Documents 下)。 2。打开终端(Application-&gt;Utilities-&gt;Terminal 应用程序-&gt;实用工具-&gt;终端)。在终端中查找到你放置cocos2d解压包的地方。我...

    cocos2d-x手机游戏开发.part5.rar

    cocos2d-x手机游戏开发,是一本介绍cocos2d游戏引擎,已经如何扩平台开发手机游戏的书。由于上传大小的限制,分成6个压缩包,不好意思。第5卷。

    Cocos2d-JS开发之旅+完整版

    第1 章 Cocos2d-JS 介绍 / 2 第2 章 跑起我们的HelloWorld / 10 第一部分总结 / 27 第二部分 做一个简单的小游戏 第3 章 Cocos2d-JS 的平面世界 / 30 第4 章 让世界来点动静 / 51 第5 章 让玩家操纵这个世界 /...

    Cocos2d x手机游戏开发与项目实战详解.part2

    第一部分:基础篇[1] 第一章主要是手机游戏概述,包括游戏概述、手机游戏类型和开发平台的分析;  第二章介绍手机游戏的策划,包括分析玩家需求,编写策划文案,游戏原型的实现。  第三章介绍C、C++编程基础,对于...

    Cocos2D-X游戏开发技术精解

    第1章 Cocos2D-X引擎的介绍 1 1.1 何为游戏引擎 1 1.1.1 游戏的核心—引擎 1 1.1.2 引擎的特点 2 1.1.3 知名的引擎介绍 4 1.1.4 引擎的分类 5 1.2 Cocos2D-X引擎的来历 8 1.3 引擎的版本 9 1.4 下载与安装 10 1.5 ...

    Cocos2D-中文版

    第1章 介绍cocos2d 第2章 开始学习 第3章 基础知识 第4章 你的第一个游戏 第5章 游戏构成要素 第6章 深入了解精灵 第7章 横向滚屏射击游戏 第8章 完成滚屏射击游戏 第9章 粒子效果 第10章 瓷砖地图 第11章 45度角

    Cocos2d x手机游戏开发与项目实战详解.part1

    第一部分:基础篇[1] 第一章主要是手机游戏概述,包括游戏概述、手机游戏类型和开发平台的分析;  第二章介绍手机游戏的策划,包括分析玩家需求,编写策划文案,游戏原型的实现。  第三章介绍C、C++编程基础,对于...

    cocos2d-x默认第一个模板

    cocos2d-x默认第一个模板注释 博客介绍 博客主页 http://blog.csdn.net/runaying

    Cocos2d-x学习资料汇总

    教程名称: Cocos2d-x学习资料汇总【】(译)cocos2d菜单教程:第一部分【】cocos2d-iPhone_Programming_Guide【】cocos2d-x2.0射击游戏实现沈大海【】cocos2d-x2.0版本自适应屏幕分辨率AutoScaleTest【】Cocos2d-x_...

    Cocos2d-x高级开发教程制作自己的《捕鱼达人》

    Cocos2d-x高级开发教程:制作自己的《捕鱼达人》 图书简介: 《Cocos2d-x高级开发教程:制作自己的《捕鱼达人》》是国内第一本全面深入讲解Cocos2d-x进阶内容的图书,Cocos2d-x创始人王哲作序推荐,《捕鱼达人》开发...

    国外的cocos2d教学翻译。第一弹:第1节到第5节。

    国外的cocos2d教学翻译。 一共13大节。 第一弹:第1节到第5节。

    如何使用cocos2d来制作一个打地鼠的游戏:第一部分

    如何使用cocos2d来制作一个打地鼠的游戏:第一部分

    Cocos2d学习资料

    第四章: 你的第一个游戏(修正错误) 第五章: 游戏构成要素 第六章: 深入了解精灵(Sprite) 第七章: 横向滚屏射击游戏 第八章: 完成滚屏射击游戏 第九章: 粒子效果 第十章: 瓷砖地图(Tilemap)基础知识 第十一章: 45度角...

Global site tag (gtag.js) - Google Analytics