零、前言

Cocos2d-x 是最常用的开源游戏框架。它的移动和桌面平台得到了微软的官方支持,它的小内核比其他框架运行得更快,使它能够在性能出色的低端安卓设备上运行。它目前由活跃的开源开发社区维护,该社区由 iPhone 和 Chukong Technologies 的原始 Cocos2d 的作者领导。

这本入门书将指导你从头开始创建一个简单的安卓二维游戏的步骤。在此过程中,您将学习 Cocos2d-x C++ 多平台游戏框架的基础知识,以及如何处理精灵、为游戏添加物理元素、播放声音、显示文本、使用粒子系统生成逼真的爆炸,以及使用 Java 原生界面(JNI)添加原生安卓功能。

这本书涵盖了什么

第 1 章设置您的开发环境,指导您一步步配置 Cocos2d-x 及其所有先决条件。

第 2 章图形,涵盖了处理背景、精灵、为它们制作动画以及使用精灵表提升它们的性能。

第 3 章了解游戏物理,演示了新的基于金花鼠的 Cocos2d-x 物理引擎的基础知识,该引擎是在 Cocos2d-x 3.0 版本中引入的。我们将创造基于物理的物体,给它们增加重力,并探测碰撞。

第 4 章用户输入,是我们在游戏中加入交互的地方,让它在触控监听器和加速度计的帮助下与用户进行交互。

第五章处理文字和字体,证明处理文字对于游戏开发至关重要。不管你的游戏有多复杂,你都有可能会显示信息,有时会有外国角色。本章向你展示了如何使用简单的真实字体和更风格化的位图字体,让你的游戏看起来更专业。

第六章音频,说明玩游戏的一部分情感来源于音乐和音效。在本章中,您将学习如何使用 CocosDenshion 音频引擎为游戏添加背景音乐和音效,该引擎自最初的 Cocos2d iPhone 游戏引擎以来就一直存在。本章还介绍了如何使用新的音频引擎播放媒体,并强调了它们之间的主要区别。

第 7 章创建粒子系统,说明了使用内置粒子系统引擎创建真实的爆炸、火、雪、雨。本章向您展示了当您需要自定义效果时,如何使用最流行的工具创建自己的粒子系统。

第 8 章添加原生 Java 代码,当您需要从 Cocos2d-x 游戏活动中添加用于创建和调用 Android 特定行为的原生代码时,会对您有所帮助。我们使用安卓平台上可用的 Java 本地接口(JNI)机制来做到这一点。

这本书你需要什么

为了遵循本书的叙述并能够重现所有步骤,您将需要一台带有 Windows 7 或更高版本的 PC,任何 Linux 发行版或运行操作系统的 Mac,以及 OS X 10.10 优胜美地。我们将在整本书中使用的大多数工具都是免费下载的。我们已经解释了如何下载和安装它们。

这本书是给谁的

这本书是为游戏编程经验很少或没有经验的人写的,他们对 C++ 编程语言有概念,愿意以非常全面的方式创建他们的第一款安卓游戏。

惯例

在这本书里,你会发现许多区分不同种类信息的文本风格。以下是这些风格的一些例子,以及对它们的含义的解释。

文本文件夹名称、文件名、文件扩展名、路径名、伪 URL 和用户输入中的码字如下所示:“为了给我们的游戏添加加速度计支持,我们首先要在我们的HelloWorldScene.h头文件中添加以下方法声明。”

代码块设置如下:

void HelloWorld::movePlayerByTouch(Touch* touch, Event* event)
{
  Vec2 touchLocation = touch->getLocation();
  if(_sprPlayer->getBoundingBox().containsPoint(touchLocation)){
    movePlayerIfPossible(touchLocation.x);
  }
}

当我们希望将您的注意力吸引到代码块的特定部分时,相关的行或项目以粗体显示:

   Size screenSize = glview->getFrameSize();
   Size designSize(768, 1280);
   std::vector<std::string> searchPaths;   
   searchPaths.push_back("sounds");

任何命令行输入或输出都编写如下:

cocos new MyGame -p com.your_company.mygame -l cpp -d NEW_PROJECTS_DIR

新名词重要词语以粗体显示。你在屏幕上看到的单词,例如在菜单或对话框中,出现在如下文本中:“点击下一步按钮,进入下一个屏幕。”

警告或重要提示会出现在这样的框中。

类型

提示和技巧是这样出现的。

读者反馈

我们随时欢迎读者的反馈。让我们知道你对这本书的看法——你喜欢或可能不喜欢什么。读者反馈对我们开发您真正能从中获得最大收益的标题非常重要。

要给我们发送一般反馈,只需向<[feedback@packtpub.com](mailto:feedback@packtpub.com)>发送电子邮件,并通过您的消息主题提及书名。

如果你对某个主题有专业知识,并且对写作或投稿感兴趣,请参阅我们在www.packtpub.com/authors上的作者指南。

客户支持

现在,您已经自豪地拥有了一本书,我们有许多东西可以帮助您从购买中获得最大收益。

下载示例代码

您可以从您在http://www.packtpub.com的账户中下载您购买的所有 Packt 书籍的示例代码文件。如果您在其他地方购买了这本书,您可以访问http://www.packtpub.com/support并注册,以便将文件直接通过电子邮件发送给您。

勘误表

尽管我们尽了最大努力来确保我们内容的准确性,但错误还是会发生。如果你在我们的某本书里发现了错误——可能是文本或代码中的错误——如果你能向我们报告,我们将不胜感激。通过这样做,你可以让其他读者免受挫折,并帮助我们改进这本书的后续版本。如果您发现任何勘误表,请访问http://www.packtpub.com/submit-errata,选择您的书籍,点击勘误表提交表链接,并输入您的勘误表的详细信息。一旦您的勘误表得到验证,您的提交将被接受,勘误表将上传到我们的网站上,或添加到该标题的勘误表部分下的任何现有勘误表列表中。通过从http://www.packtpub.com/support中选择您的标题,可以查看任何现有的勘误表。

盗版

互联网上版权材质的盗版是所有媒体的一个持续问题。在 Packt,我们非常重视版权和许可证的保护。如果您在互联网上遇到任何形式的我们作品的非法拷贝,请立即向我们提供位置地址或网站名称,以便我们寻求补救。

请通过<[copyright@packtpub.com](mailto:copyright@packtpub.com)>联系我们,获取疑似盗版资料的链接。

我们感谢您在保护我们作者方面的帮助,以及我们为您带来有价值内容的能力。

问题

如果您对本书的任何方面有问题,可以在<[questions@packtpub.com](mailto:questions@packtpub.com)>联系我们,我们将尽最大努力解决。