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

cocos2d滚屏射击游戏

 
阅读更多
第7章 滚屏射击游戏(上)
7.1 高级视差滚屏
7.1.1 将背景创建为底纹
将背景条纹分成单独的文件保存并不只是为了保持正确的Z轴次序,这么做还可以节省空间。
将背景条纹分成单独的文件保存还有助于保持高帧率。iOS设备的填充能力(每一帧可以画的像素个数)非常有限。由于图像经常会互相覆盖,iOS设备不得不在同一帧多次绘制相同的像素。最极端的情况是一幅全屏图像覆盖在另一幅全屏图像上,虽然你只看到其中一幅,但设备将会绘制两幅,这在技术上叫做overdraw。将背景分为独立的条纹可以减少覆盖部分,从而减少绘画的像素点数量,以提高帧率。
7.1.2 在代码中重建背景
因为所有的图像都已经保存在一个全屏图像中,Zwoptex会记住这些图像的的偏移值。你唯一要做的就是将这些图像放在画布中它们各自的中心位置上,然后它们就会在正确的位置上。
提示:
由于Zwoptex保存了图像的偏移值,因此在cocos2d中重建背景会非常简单。对于创建游戏界面布局来说,这也是一个非常棒的方式。可以将界面上不同的UI元素设计为独立的层。然后将每一层作为独立的包含透明信息的全屏文件单独输出,并根据输出的文件生成一个纹理相册。这样一来,不必费心对各个图层进行定位就能轻松实现最初的设计,也不会造成内存浪费。
7.1.3 移动ParallaxBackground
7.14 视差滚动的速度因素
关于CCArray和iPhone SDK中所有容器的关键问题:它们只能存储对象,不能存储整数或浮点数之类的数值。解决这个问题的方法是将数值封装到NSNumber对象中。
7.15 实现背景的无限滚动
在每一个条纹的游标将该条纹重复一遍,这样一来,背景条纹的宽度变为原来的两倍,可以满足无限滚屏的需求。
我们仅仅需要检查条纹的横坐标,判断它是否小于负的屏幕的宽度。如果是,就加上屏幕宽度的两倍。这样就使原来在屏幕左边的条纹移动到了屏幕右边,正好在屏幕右边,正好在屏幕外面。通过对两个精灵不断重复这个动作,就有了无限滚动的效果。
7.1.6 取消闪烁
如果仔细观察,可能会注意到在条纹的接缝处,会不时地有垂直的黑线出现。出现黑线的原因是四舍五入有误差,因此不时地会出现宽度为1像素的黑色线条。
最简单的解决方法是让左右两个条纹间有1个像素发生重叠。
7.1.7 重复贴图
你可以在指定大小的矩形区域里让任意纹理重复出现。
这里用到了OpenGL支持的GL_REPEAT纹理参数。但它只对边长为2的方幂的正方形区域有效,就像32*32或128*128那样的区域。
7.2 虚拟手柄
不同于传统的移动游戏设备,iOS设备上没有按钮、十字按钮,更没有手柄,所有的输入操作都使用触控屏接收。
7.2.1 引入SneakyInput
在编写任意一个看起来十分普通的程序之前,总是应该先搜索一下是否存在可以直接使用的解决方案,而不要花大量时间去自己写。
SneakyInput的源代码保存在github上,这是一个公开的代码管理网站,地址如下:http://github.com/sneakyness/SneakyInput。
7.2.2 集成SneakyInput
下面5个类是SneakyInput的核心:
1)SneakyButton和 SneakyButtonSkinnedBase
2)SneakyJoystick和SneakJoystickSkinnedBase
3)ColoredCircleSprite
7.2.3 触摸按钮产生射击
7.2.4 为按钮添加皮肤
计算机图形学中的皮肤是指给一个普通的对象添加一个纹理或是一个不同的外观。
7.2.5 控制动作
7.2.5 数字控制
如果虚拟手柄不适合你的游戏怎么办?你可以把SneakyJoystick类变成一个数字控制器,就像D-pad一样。
joystick.isDPad=YES;
joystick.numberOfDirections=8;
将isDPad属性设为YES,于是摇杆就成了数字控制器。D-pads有4个方向键,在许多游戏中,你可以同时按住两个方向键,这样就能让较色沿着对角线方向移动。为了得到这样的效果,可将numberOfDirectors属性设置为8。SneakyJoystick自动确保这些方向被均衡地分配到拇指控制器中。
7.2.6 另一个选择
GPJoystick是一个商业软件。网址:http://wrensation.com/?p=36
7.4 本章小结
第8章 滚屏设计游戏(下)
8.1 添加BulletCache类
注意:
虽然添加一个像BulletCache这样的CCNode会增加场景层次体系的深度,但这样的变化不会造成太大的影响。如果你很介意场景层次体系的继承深度,一个替代的方案是像往常那样在GameScene类中添加精灵节点,然后在BulletCache类中使用存取器方法得到精灵节点。不过这样会导致额外的函数调用,可能对性能产生影响。我的原则是:首先应该保持代码良好的可读性,然后只在必要时才进行重构来提高性能。
8.2 关于敌人
对于程序设计,并没有一种所谓的最好的方法。我们所做的选择都完全处于主观喜好和个人经验。如果你愿意在对所制作的游戏有更深入的理解之后再重构代码,那么在移开时,一份可以工作的代码会比一份简洁、完美的代码更值得推崇。
8.3 Entity类的继承体系
8.3.1 EnemyEntity
只要不忘记调用[super init...]这个方法,我们就可以在数值赋给self之前运行一下代码,不然的话,super类无法初始化,将会出现奇怪的错误和导致崩溃。
在Objective-C中,你向nil对象发送任何消息都没有问题,因为它们都将被忽略掉。
8.3.2 EnemyCache类
8.3.3 组件类
组件类是用来扩展游戏逻辑的插件。如果给一个实体添加了一个组件,那么这个实体就会执行组件的逻辑行为:移动、开火、动画、显示生命条,等等。
8.4 射击开火
8.5 大怪物的生命条
大怪物不可能是一个很简单、可以被一下就消灭的敌人。所以我们需要一个生命条来给玩家反馈一些信息:即大怪物每被击中一次,它的生命条就会缩短。
8.6 本章小结
分享到:
评论

相关推荐

    如何使用cocos2d 2.x制作一个多向滚屏射击游戏-第一部分源代码

    在本教程中,我们将深入探讨如何使用Cocos2d 2.x引擎开发一款多向滚屏射击游戏。Cocos2d 2.x是一款强大的2D游戏开发框架,它提供了丰富的功能,包括图形渲染、动画系统、物理引擎以及事件处理等,使得游戏开发者能够...

    cocos2d-iphone游戏开发pdf

    第七章《横向滚屏射击游戏》是一个具体的案例研究,展示了如何利用cocos2d创建一个典型的横版射击游戏,包括滚动背景、子弹发射、敌机AI等内容。 第九章《粒子效果》介绍了cocos2d的粒子系统,用于创建各种视觉特效...

    cocos2d教程【15个文档】

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

    Cocos2D-中文版

    第7章和第8章则聚焦于一个完整游戏案例的制作,具体到一个横向滚屏射击游戏的开发。开发者将学习如何将前面章节学到的知识整合起来,通过实例展示一个游戏从无到有的完整开发流程。 第9章介绍粒子效果,这是增加...

    Cocos2d学习资料

    第七章: 横向滚屏射击游戏 第八章: 完成滚屏射击游戏 第九章: 粒子效果 第十章: 瓷砖地图(Tilemap)基础知识 第十一章: 45度角瓷砖地图(Isometric_Tilemaps) 第十二章: 物理引擎 第十三章: 弹球游戏

    Learn iPhone and iPad Cocos2D Game Development(中文版)

    01 介绍cocos2d 02 开始学习 03 基础知识 04 你的第一个游戏 05 游戏构成要素 06 深入了解精灵 07 横向滚屏射击游戏 08 完成滚屏射击游戏 09 粒子效果 10 瓷砖地图基础知识 11 45度角瓷砖地图 12 物理引擎 13 弹球...

    learn cocos2d on iphone 中文版PDF高清

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

    iphone game cocos2d

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

    Learn iPhone and iPad Cocos2D Game Development中文版(13章全)

    第7章“横向滚屏射击游戏”通过一个具体的示例,展示了如何利用Cocos2D实现滚动背景和动态游戏行为,这对于制作动作类游戏尤其重要。 第10章“瓷砖地图(Tilemap)基础知识”涵盖了Cocos2D中的地图系统,讲解了如何...

    Learn iPhone and iPad Cocos2D Game Development

    第7章《横向滚屏射击游戏》展示了如何构建一个完整的滚动游戏场景,这涉及到了场景管理、动态物体的移动以及用户输入响应等技术。开发者可以通过此章学习到如何实现动态的游戏世界。 第9章《粒子效果》介绍了Cocos...

    国外的cocos2d教学翻译。第二弹:第6节到第10节。

    第8章——“完成滚屏射击游戏”,在上一章的基础上,进一步完善游戏功能。这可能包括增加更多的敌人类型、设计复杂的游戏逻辑、优化性能,以及添加得分系统和游戏结束条件。这一章将教你如何通过cocos2d的事件处理...

    cocos2d中文学习第一部分(1到7章)

    最后,第7章《横向滚屏射击游戏》是一个进阶示例,它涵盖了更复杂的游戏设计和实现技巧,如滚动背景、敌人生成和射击机制等。这将帮助你将前面所学的知识应用到实践中,构建一个完整的、有挑战性的游戏。 通过这七...

    cocos2d for iphone 开发教程

    第7章——“横向滚屏射击游戏”则提供了一个实际项目案例,演示如何利用Cocos2d构建一个典型的横版滚动射击游戏。此章节可能涵盖了游戏场景的管理、子弹发射机制、敌机行为逻辑以及背景滚动效果的实现。通过这个实例...

    Learn iPhone and iPad Cocos2D Game Development中文版

    第7章-横向滚屏射击游戏:这一章会讲解如何创建一个滚动背景的游戏,包括实现滚动效果、子弹发射和敌人AI设计等。这涉及到空间管理、游戏循环和碰撞检测等复杂机制。 第9章-粒子效果:粒子系统是游戏开发中常用的...

    cocos2d全集翻译版

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

    cocos2游戏开发教程(国外书籍译文)part2

    本教程涵盖了一系列章节,包括横向滚屏射击游戏、瓷砖地图、45度角地图、粒子效果、物理引擎以及弹球游戏的实现,旨在帮助开发者提升Cocos2D游戏开发的专业技能。 首先,我们来到第7章——“横向滚屏射击游戏”。这...

Global site tag (gtag.js) - Google Analytics