GameSalad IOS 游戏开发学习手册(一)

原文:Learn GameSalad for iOS Game Development for iPhone, iPad, and HTML5

协议:CC BY-NC-SA 4.0

零、简介

2007 年,苹果推出了 iPhone,彻底改变了我们的生活方式,但最重要的是 iOS 的诞生。今天,iOS 被用于 iPhone、iPad 和 iPod Touch。通过 App Store,出现了一种新的商业模式,提供超过 50 万个应用和游戏,导致 250 亿次下载。这种新的商业模式对于游戏创业者和爱好者来说是一个巨大的机会,因为 App Store 中有超过 100,000 款游戏。

GameSalad 的使命是帮助你成为这场革命的积极参与者。GameSalad 是一款功能强大的 iOS 图形 2D 游戏开发引擎。据 GameSalad 称,App Store 中超过 3%的游戏是用其开发工具 GameSalad Creator 创建的。自 2009 年以来,该创作者已被下载超过 15 万次。

GameSalad 的强大之处在于它不需要任何编程知识。你没看错:根本没有编程!你专注于你的游戏逻辑,通过一个直观的所见即所得的界面,你用一些拖放动作来设计你的游戏。忘记面向对象编程(OOP)和 Objective-C 的漫长学习曲线;GameSalad 不再需要这样做。

然而,这种力量不是没有一些约束的。例如,你只能开发 2D 游戏。此外,您只能使用一组特定的功能,这些功能很重要,但与 iOS SDK 相比并不完整。不要担心——这些限制仍然会给你留下无限数量的游戏来创作!

GameSalad 有两个版本:免费版和专业版。免费版显然是免费的,而专业版每年需要 299 美元。我在第一章中介绍了这两个版本的区别。

这本书分为三部分。第一部分为你提供 GameSalad 的基本技能。第一章提供了在电脑上安装 GameSalad 所需工具的分步指南。在第二章和第三章中,你设计了一个功能齐全的经典游戏 Pong,你熟悉了场景、演员、属性和行为。然后你在第四章中创造一个新版本的 Arkanoid,巩固你的技能并第一次使用加速度计。第五章结束了这本书的第一部分,你翻拍了《太空入侵者》并在你的武器库中添加了新的工具。

第二部分在 GameSalad 中加入更复杂的功能和项目。在第六章和第七章中,你创建了一个全功能的类似愤怒的小鸟的游戏,学习所需的物理知识并创建了一个非常先进的菜单系统。在第八章中,你将音乐和声音添加到你的项目中,并用一个迷宫游戏实现一个非常强大的视觉效果。

第三部分将你的游戏带到苹果商店,完成旅程。在第九章中,你通过在游戏中心打磨和添加特性来完成在第四章中开始的类似 Arkanoid 的项目。第十章举例说明了一些带有 GameSalad 的非游戏应用。您还将了解设备时钟功能。在第十一章中,你通过一个非常详细的分步教程在 App Store 上发布你的游戏。第十二章对第十二章中的游戏推广进行了简单介绍。你学习的主要策略,让你的游戏能见度,使它有可能成为下一个大击球手!

一、准备您的设计环境

对于任何游戏设计师来说,工作环境都是一个非常重要的方面。你不仅会在合适的环境中获得效率,还会获得乐趣。假设您即将完成游戏,并希望立即在您的设备上测试它,但随后您意识到您还没有安装测试环境。虽然这可能只需要几分钟,但这难道不令人沮丧吗?如果这个故事引起了你的共鸣,花适当的时间遵循本章讨论的步骤。

在开始使用 GameSalad 之前,您需要准备好设计环境。本章将指导您设置所需的工具。

GameSalad 要求

以下是使用 GameSalad 开发 iOS 游戏的最低硬件和软件要求:

  • Intel-based Mac with 1gram
  • Mac x 10.6 (snow leopard) or later
  • AniOS devices (ideally one device per target platform)
  • Xcode 4.2 or higher
  • GameSalad Creator 0.9.91 或更高版本
  • GameSalad Viewer 0.9.91 版拜占庭·阿列诺·阿列诺维奇·阿列诺维奇·阿列诺维奇·阿列诺维奇·阿列诺维奇·阿列诺维奇·阿列诺维奇·阿列诺维奇·阿列诺维奇·阿列诺维奇·阿列诺维奇

尽管运行 Snow Leopard 的任何基于英特尔的 Mac 电脑都足够了,但我强烈建议你买一台屏幕为 15 英寸或更大、内存为 2GB 的电脑。这将减轻你的生活,因为编译时间会变得更短。

在这一章中,我将在以下几个方面指导你:

  • 哦,天啊加米沙拉
  • Register for the iOS Developer Program
  • Install Xcode
  • Install GameSalad creator
  • Install GameSalad Viewer

注册到 GameSalad

要使用 GameSalad,你实际上不需要在 GameSalad.com 上注册,但我强烈建议你这么做,原因有几个。首先,这会让 GameSalad 知道你是用户。由于 GameSalad 是一家非常年轻的初创公司,了解他们的开发者社区对他们来说非常重要。用户越多,平台越有吸引力。第二,这将允许你在论坛上发布消息或问题。当你需要支持时,能够利用社区是一种无价的资源。第三,你将有资格获得 GameSalad 的标准技术支持。第四,你需要它来发布你的游戏。发布游戏和复制本书的大部分示例并不强制要求注册为 Promember,但是要访问 Promember 功能,您必须拥有一个有效的 Pro 帐户(每年 299 美元)。我将在第九章中介绍 Promember 的一些特性。当你感觉更熟练时,你可以决定注册。

要注册,请打开您最喜欢的网络浏览器并转到[gamesalad.com/download/getCreator](http://gamesalad.com/download/getCreator)

您需要:

  • Provide a valid email address.
  • Select a user name.
  • Select a password.
  • Agree to the terms of use and privacy policy.

图 1-1 显示了极轻注册表单。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 1-1。??【GameSalad】登记表

您可以在[gamesalad.com/terms](http://gamesalad.com/terms)查看条款和条件。您可以在[gamesalad.com/privacy](http://gamesalad.com/privacy)查看隐私政策。

填写所需信息后,您将被引导至 GameSalad Creator 下载和安装说明页面。

如果还不想注册,可以在[gamesalad.com/download/latestCreator](http://gamesalad.com/download/latestCreator)直接进入下载页面。

下载文件时,您可以继续阅读本章。我将在本章后面提供安装说明。

关于 GameSalad Pro

成为职业玩家有几个好处,尤其是如果你打算从游戏开发中获得一个严肃的业务。

一个专业帐户将使你能够在没有 GameSaladsplashscreen 的情况下在 iOS 上发布(把你的改为!),将外部链接放入您的应用(在精简版中实现“购买完整版”链接),访问 GameCenter 和 iADs 功能,实现应用内购买和 Kiip 货币化,以及访问优先技术支持。

此外,虽然超出了本书的范围,专业会员资格将使您能够在 Android 平台上发布。你的潜在市场瞬间扩大了。

图 1-2 总结了成员资格的特征。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 1-2。 Pro 会员功能

在 Pro 计划中注册非常容易。使用您的免费会员帐户登录 GameSalad 网站。如果您跳过了本章的注册部分,现在返回并注册也不迟。然后你需要去[gamesalad.com/membership/join](http://gamesalad.com/membership/join)。您必须再次提供您的密码。您可以通过 PayPal 或亚马逊支付。

在 iOS 开发者计划中注册

如果您已经注册了 iOS 开发者计划的付费版本,您可以跳过这一部分,直接安装 Xcode。

你不需要在任何 iOS 开发者程序中注册就可以使用 GameSalad,但一旦你想在应用商店中发布应用或访问一些 GameCenter 和 iADs 功能,这将成为强制性的。为了在你的设备上安装 GameSaladiOS Viewer 和测试你的游戏的临时版本,这也是必须的。

另外,iOS 开发者计划非常实惠。个人访问每年只需 99 美元,你可以访问成千上万的教程和视频,注册访问 WWDC,预览未来的 iOS 版本,以及在 App Store 上的发布权。

此外,为了在 iOS 设备上安装任何 iOS 应用,必须在开发者计划中注册。要安装 GameSalad Viewer,您需要直接从 Xcode 安装到您的 iOS 设备。这称为临时安装。开发者计划使您可以使用多达 100 台设备来完成这项工作。

所以让我们开始吧。打开您的网络浏览器并转到[developer.apple.com/programs/ios/.](http://developer.apple.com/programs/ios/.)

然后单击“立即注册”按钮。

单击继续按钮。

根据您的情况选择一个选项,参见图 1-3 。

如果你是苹果的新开发者,

a)并且您还没有 Apple ID(或者您希望为开发创建一个特定的 ID),那么您需要选择:

我需要为苹果开发者计划创建一个新账户和苹果 ID。

b)并且您有一个 Apple ID,那么您需要选择:

我有一个 Apple ID,我想用它来注册 Apple 开发者计划。

**注意:**Apple ID 是您的帐户,您可能已经使用它在 iTunes 上购买、注册 Apple 产品或访问 Mac 应用商店。

如果你是现有的苹果开发者,

a)但未在付费程序(iOS 或 Mac)中注册,则您需要选择:

我是苹果公司的注册开发者,我想加入苹果公司的付费开发者计划。

b)您已经注册了一个付费计划,但您想添加另一个套餐,请选择:

我目前注册了 iOS 开发者计划或 Mac 开发者计划,我想在现有帐户中添加一个额外的计划。

如果您注册了 Mac 开发人员计划并希望添加 iOS 开发人员计划,或者您注册了 iOS 开发人员计划并希望升级为公司注册,则属于后一种情况。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 1-3。 新的或注册的苹果开发者页面

出于本书的目的,我将向您展示为注册 iOS 开发者计划而创建新的 Apple ID 的步骤。

下一步是选择个人订阅还是公司订阅。我强烈建议您选择个人订阅。但是,如果你是一个公司,你应该注册一个。有了个人订阅,这个过程非常快速和简单。不到一天你就可以开始工作了。公司认购需要你提交许多法律文件,如公司注册,证明你有权注册公司等。苹果公司,验证过程需要几天时间。

下面就以个人为单位,如图图 1-4 所示。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 1-4。 个人或公司认购

下一步是创建一个 Apple ID。使用表 1-1 准备您需要在苹果开发者计划登记表上提供的信息。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

接下来,你需要提供一些关于你作为苹果开发者的活动的额外信息。苹果想知道你在哪个平台上开发:iOS、Mac OS X 还是 Safari。

这还没有结束;苹果确实很好奇你的意图。您需要根据表 1-2 中的选择选择您的主要目标市场。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

然后,Apple 会询问您打算开发的应用领域,并根据表 1-2 提供相同的选择(但您可以选择多个)。

然后,您必须指出您的应用的主要类别。

  • Free application
  • business application
  • Enterprise (internal) application
  • Web application

你还必须提供你多年的开发经验和在其他平台上的开发经验的信息(图 1-5 )。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 1-5。 开发者体验题

正如你刚刚经历的,苹果喜欢了解他们的开发者社区。

下一页要求您同意注册苹果开发者协议。您可以在以下地址以 PDF 文件的形式查看该协议(在撰写本文时有效):

[developer.apple.com/programs/terms/registered_apple_developer_20100301.pdf](http://developer.apple.com/programs/terms/registered_apple_developer_20100301.pdf)

阅读协议,勾选页面底部的方框表示同意。下一步是输入刚刚发送到您之前提供的电子邮件地址的验证码,如图图 1-6 所示。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 1-6。 验证码页面

输入验证码后,您将被引导至付费信息页面。你需要在你的信用卡上输入准确的信息。

选择 iOS 开发者项目,价格为 99 美元(或者 128 新元,如果你像我一样住在新加坡的话)。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 1-7。 iOS 开发者计划费用

在提交之前,您有机会最后一次查看您的注册信息。仔细查看信息。

接下来,接受 iOS 开发者计划许可协议(这么多协议要看)。您可以通过以下地址获取该协议(截至 2011 年 10 月):

[developer.apple.com/programs/terms/ios/standard/ios_program_standard_agreement_20111004.pdf](http://developer.apple.com/programs/terms/ios/standard/ios_program_standard_agreement_20111004.pdf)

通过选中页面底部的协议框并单击“我同意”来确认您接受

你快完成了!这是最后一英里。您必须根据图 1-8 将 iOS 开发者程序添加到购物车中。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 1-8。 将 iOS 开发者计划加入购物车

商店结账并进行实际付款。这部分我会把它留给你和你的信用卡。确保信用卡上的名称与创建开发人员帐户时使用的名称相同。如果您选择了公司注册,您将需要向苹果公司传真许多法律文件。

最后一步是激活您的帐户。这可能需要几分钟到几天的时间。一旦完成,Apple 将向您发送一封电子邮件,通知您您的 iOS 开发者计划帐户已准备就绪。

这些步骤总结在图 1-9 中。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 1-9。 iOS 注册流程

安装 Xcode

Xcode 是来自苹果的开发环境。Xcode 的安装相当简单,只需几个步骤就可以完成。

1.安装 Xcode 需要您前往 Mac 应用商店。

2.在 App Store 应用的搜索区域键入“Xcode”。图 1-10 显示了 Xcode 页面。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 1-10。【xcode app store page】

3.点按 Xcode 图标下方的按钮。这将开始下载 Xcode 安装文件。

这可能需要一点时间,因为文件是 1.68GB。请耐心等待。

4.下载完成后,打开Install Xcode.app,如图图 1-11 所示。它位于应用文件夹中。这将启动安装过程。在开始安装 Xcode 之前,您必须退出所有其他应用。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 1-11。 安装 Xcode 图标

5.根据图 1-12 ,点击安装按钮确认您要安装 Xcode。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 1-12。 Xcode 安装程序页面

6.根据图 1-13 阅读并接受 Xcode 许可协议。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

**图 1-13。**Xcode 许可协议

一旦您同意协议,Xcode 安装过程将开始,如图 1-14 所示。根据您的机器,可能需要 10 到 20 分钟。关闭其他应用将加快安装速度。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 1-14。 工作中的 Xcode 安装程序

安装完成后,将显示 Xcode 欢迎页面,如图图 1-14 所示。Xcode 图标会自动添加到 dock 中。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 1-15。 Xcode 欢迎页

安装 GameSalad Creator

安装 GameSalad Creator 非常容易。如果您尚未注册和下载安装文件,请转到[gamesalad.com/download/latestCreator](http://gamesalad.com/download/latestCreator)

  1. 双击。您下载的文件。

  2. Read and agree to the GameSalad.com Terms of Service, as per Figure 1-16. 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    ***图 1-16。*服务条款

  3. Drag the GameSalad icon into the Application folder, as per Figure 1-17. 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    图 1-17。 安装屏幕

  4. Open GameSalad.app in the Application folder and you are ready (see Figure 1-18). 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    **图 1-18。**GameSalad 起始页

这比注册苹果开发者项目简单多了!

安装 GameSalad iOS 浏览器

GameSalad 查看器是一个 Xcode 项目。这意味着你下载一段代码,你将编译并安装在你的 iPhone 或任何其他 iOS 设备上。这是你之前安装 Xcode 的主要原因之一。

为什么 GameSalad iOS Viewer 是一段代码?

嗯,这样 GameSalad 就可以安装一个浏览器,而不需要通过 App Store 发行版。GameSalad Creator 将通过 Wi-Fi 将您的项目发送给查看者,而不可能获得 GameSalad 生成的代码。这保护了 GameSalad 的商业模式。

获取 GameSalad iOS 查看器

你可以从[gamesalad.com/download/getViewer](http://gamesalad.com/download/getViewer)下载 GameSalad iOS 浏览器。

您将使用最新版本的 iOS Viewer 下载一个.zip文件。但是,在匆忙解压缩文件之前,让我们来看一下在您的 iOS 设备上创建预置描述文件的过程。

在您的钥匙串中安装开发者证书

开发者证书是安装 iOS 查看器或任何其他临时游戏的关键要素。它用于签署您的应用,以便您可以将它们安装在您的 iOS 设备上。

首先,你需要找到你的钥匙链。钥匙串位于“实用工具”中。

1.打开 Finder 窗口并导航到“实用工具”文件夹(在您的应用文件夹中)。

2.连按钥匙串访问应用。

在“钥匙串访问”中,您将使用“助理”向 Apple 请求开发者证书。

3.导航到钥匙串访问外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传证书助理外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传向证书颁发机构请求证书。

一个窗口窗体将会打开,如图 1-19 所示。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 1-19。 请求证书

使用您在 iOS 开发者计划中注册时使用的电子邮件地址填写电子邮件地址,然后选择“保存到磁盘”

单击继续按钮。

选择保存证书的位置。你可以选择把它保存在你的桌面上,这样你就可以很容易地找到它。您刚刚下载的文件是一个证书签名请求(CSR ),您将使用它来生成证书。

4.前往钥匙串访问外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传退出钥匙串访问,关闭钥匙串访问应用。

退出“钥匙串访问”应用有助于减少安装证书时可能出现的错误。

5.打开您的网络浏览器,进入开发者会员中心([developer.apple.com/membercenter/](http://developer.apple.com/membercenter/)),然后点击 iOS 供应门户。

在这个阶段,你应该没有任何证书。通过单击左侧的证书菜单检查这一点,并验证没有开发或分发证书。

点击图 1-20 中所示的链接,下载 WWDR 中级证书,因为该证书需要安装在您的钥匙串中。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 1-20。 链接下载 WWDR 中级证书

6.在证书中的开发选项卡下,单击申请证书选项。

您将被引导至标题为创建 iPhone 开发证书的页面(图 1-21 )。选择您在步骤 3 中创建的证书签名请求(CSR)。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 1-21。 创建 iPhone 开发证书

选择文件后,单击提交按钮。

7.转到 Distribution 选项卡,执行完全相同的操作。

等待 1 到 2 分钟,然后刷新页面。您的开发和分发证书应该可以下载了。

8。通过单击证书旁边的下载按钮,下载分别位于开发和分发选项卡下的开发和分发证书。

现在,您的下载文件夹中应该有三个文件:

  • 【苹果园】。cer
  • IOs _ 开发。条件性情绪反应
  • IOs _ 发行版。条件性情绪反应

9.将证书安装在您的钥匙串中。

您需要安装这三个证书,从 AppleWWDRCA.cer 开始。要安装每个证书,只需双击每个文件。这将打开“钥匙串访问”。通过在“我的证书”窗口中检查证书,验证证书是否已正确安装。然后完全退出 KeychainAccess,然后对下一个证书重复该操作。

现在,您的计算机上已经安装了证书。

为 iOS 查看器创建预置描述文件

在安装 iOS 查看器之前,您首先需要为 GameSalad iOS 查看器创建一个预置描述文件。

打开您的网络浏览器,进入开发者会员中心([developer.apple.com/membercenter/](http://developer.apple.com/membercenter/)),然后点击 iOS 供应门户。

1.在您的配置门户中注册您的设备。

转到设备外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传添加设备。根据图 1-22 键入名称和设备 ID,并点击提交按钮。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 1-22。 向供应门户添加 iOS 设备

若要获取设备 ID,请通过 USB 电缆将 iOS 设备连接到 Mac 电脑,然后打开 Xcode。在 Xcode 中,导航到窗口外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传管理器。标识符字段中的 40 个十六进制字符串是您设备的 ID。如果这是您第一次使用您的设备进行开发,请单击本页上的“用于开发”。

2.为 iOS 查看器创建一个 AppID。

单击应用 ID 并选择新的应用 ID。对于描述,请使用全附加字符串,如 iOSViewer。不要修改团队 ID 选项。并选择唯一的包标识符。这个标识符必须是世界上唯一的。Apple 建议您反向使用 web 域名,并添加一个唯一的应用名称。点击提交按钮(图 1-23 )。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

***图 1-23。*新应用 ID

3.为 iOS 查看器创建预置描述文件。

点击供应外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传开发外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传新建个人资料。您将创建一个新的开发预置描述文件,允许您在 iOS 设备上安装 GameSalad Viewer。

提供类似“iOSViewer”的配置文件名称勾选您证书的复选框。根据图 1-24 ,选择您刚刚创建的应用 ID 并选择您之前注册的设备。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 1-24。 新的配置文件

4.下载预置描述文件。

通过点按“下载”来下载新创建的预置描述文件。如果状态仍然是挂起,点击刷新按钮,它应该在几秒钟内确定。

5.安装预置描述文件。

双击下载文件夹中的预置描述文件。这将自动在你的机器上安装它。要确认描述文件的正确安装,请打开 Xcode 并通过导航到窗口外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传管理器来启动管理器。在管理器的左侧,选择预配配置文件,并检查您的配置文件是否出现在主窗口的列表中。如果不是这样,请通过双击您的预置描述文件来重复安装。

安装 iOS 浏览器

现在是时候回到 iOS 查看器了。zip文件。经过这么长时间的等待,你的耐心得到了回报。你现在可以解压了。

双击iOSViewer<version>.xcodeproj文件(其中<版本>是你的 iOS 浏览器的版本号)。这将自动启动 Xcode。

1.更改包标识符。

点按 Xcode 左侧面板上的 GameSalad 检视器。这将显示项目摘要信息,如图 1-25 所示。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 1-25。 配菜查看器信息

将 Identifier 字段更改为您在步骤 3 中使用的值,作为您的惟一包标识符。

2.更改代码签名。

在 GameSalad viewer 项目页面中,进入构建设置,并根据新的预置描述文件“iOSViewer”更改代码签名,如图 1-26 所示。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 1-26。 改码签约

你准备好运行 iOSGameviewer 了吗?

将 iOS 设备连接到 Mac,选择 iOS 的目标平台,确保从 Stop 按钮旁边的下拉栏中选择了您的设备,数到三,然后按 Run 按钮。

编译和安装可能需要 1 到 2 分钟。Xcode 会在状态面板中显示进度

然后你会在你的 iOS 设备上看到图 1-27 中的屏幕。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 1-27。 配菜查看器

你可以通过打开一个 GameSalad 模板来测试浏览器,比如“Basic Shoot Them Up”,然后根据你的 iOS 设备点击“在 iPhone 上预览”或“在 iPad 上预览”(参见图 1-28 )。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 1-28。 GameSalad 浏览器启用

恭喜你!您已经设置了您的设计环境。你现在可以继续游戏的乐趣了。让我们创造一些游戏!

总结

好了,最无聊的部分做完了。GameSalad 的发展需要这个小小的牺牲。从现在开始,事情会有趣得多。

本章涵盖了:

  • Registration and installation of salad
  • Registration on iOS developer program
  • Xcode installation
  • Installation of GameSalad Viewer

在接下来的章节中,当你学习 GameSalad 的基础知识时,你将会创造一些真正有趣的游戏。

二、你从头开始的第一个游戏:乒乓游戏

现在您已经正确地设置了您的环境,让我们使用 GameSalad 来创建一个真正的游戏。在这一章中,我将指导你创建一个完整的游戏:Pong。这一章涵盖了 GameSalad 的基础知识;下一章将介绍游戏的更多特性。

本章具体涵盖:

  • Game project creation
  • Create scenes, actors, attributes, behaviors
  • Introduction to collision

为了看看你将在本章中实现什么,你可以打开文件MyFirstPong_step6.gameproj,它位于[www.apress.com](http://www.apress.com)Chapter_1_File文件夹中。打开此文件将启动 GameSalad。然后你只需要点击 GameSalad 中的预览按钮。

关于乒乓球的一点历史

七十年代见证了电子游戏产业的诞生。Pong 为许多其他游戏开发者指明了道路。当然,当时的技术并不像今天这样先进,所以游戏非常有限。最重要的限制之一是图形。作为最早的街机游戏之一,Pong 也不例外。用户界面非常简单,正如你在图 2-1 中看到的。尽管如此,它是如此具有革命性,以至于公众大量采用了它。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 2-1。 原 Pong 游戏截图

Allan Alcorn 于 1972 年在 Atari 工作时创建了 Pong。但是世界几乎没有了解这个游戏。作为一名实习生,Allan 被分配了创建一个游戏的练习,以发展他的技能。他带着 Pong 回来了。雅达利的管理团队被最终的结果彻底吓住了,他们决定将游戏商业化。这可能是他们最好的决定之一。Pong 作为一款街机游戏的首次发布获得了巨大的成功,并催生了视频游戏行业。图 2-2 显示的是街机版 Pong。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 2-2。 原 Pong 街机

Pong 后来开发了几个版本,包括一个家庭游戏。Pong 的家庭版,如图图 2-3 所示,创建于 1974 年,但由于难以找到发行渠道,直到 1975 年才发布。随着时间的推移,已经发布了几个版本(和克隆版本)。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 2-3。 批量生产的乒乓游戏

我记得我在雅达利家用游戏机上玩了几个小时的乒乓球。原来父亲给自己买了一台雅达利 2600。这是 1982 年发行的“达斯·维达”特别版,全黑色,有四个开关。这是最早的视频游戏机之一。有了游戏机,你就有了一个可以运行几个游戏的设备(通过一个卡带系统)——而不像 Home Pong 那样只能运行一个游戏。那时我只有五岁,但我清楚地记得我玩得很疯,让我父亲很生气,因为几天后我就不可战胜了。

指定游戏概念和规则

当你开始一个新的游戏项目时,一个好的做法是从指定游戏概念和在纸上写下游戏规则开始。这为你的工作提供了结构。

游戏概念

这个游戏的目的是通过第一个达到 11 分,在模拟乒乓球比赛中击败你的对手。这是一个二维游戏,玩家垂直控制球拍。

游戏规则

人类玩家 1 在屏幕左侧与人类玩家 2 对战。(CPU 播放器将在下一章介绍。)球员用球拍来回击球。

创建新的 GameSalad 项目

你准备好玩乒乓球了吗?

首先,让我们创建一个新的 GameSalad 项目。在应用中点击 GameSalad 图标,如图 2-4 所示,打开 GameSalad Creator。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

**图 2-4。**GameSalad 应用 logo

选择加号按钮(新建),选择“我的伟大工程”,然后点击“在 GameSalad 中编辑”这将在 GameSalad 中打开一个新项目(图 2-5 )。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

**图 2-5。**GameSalad 启动画面

您将到达图 2-6 所示的页面。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 2-6。 项目信息页面

此页面是项目信息页面。它包含项目的一般信息,如项目标题、游戏平台、描述和说明。输入表 2-1 中显示的信息。

你的屏幕应该看起来像图 2-7 。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 2-7。 我的第一个乒乓游戏项目信息页面

所有这些信息都只是草稿。在您提交作品供 App Store 验证之前,您将有机会对其进行审核。

保存项目。在文档中创建一个文件夹,并将其命名为LearnGameSalad_chap2

现在保存项目的副本。这样你可以经常保存你的进度。点击文件外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传另存为,将文件命名为MyFirstPong.gameproj,保存到新建的文件夹中(图 2-8 )。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 2-8。 拯救游戏

你已经准备好开始你的项目了。

关于分辨率独立性:

分辨率独立是 GameSalad 的一大特色。简而言之,它可以让你设计一个高分辨率版本的游戏,可以适应 iOS 设备的各种分辨率。这增加了游戏中潜在目标的数量。

它是如何工作的?GameSalad 会自动调整所有作品的大小,通过创建较低分辨率的作品副本来适应 iOS 设备的分辨率。

要享受此功能,请选择分辨率独立性,并为 retina 显示屏分辨率设计您的游戏作品。

有一个小秘密让它很好地工作。你所有的作品必须有一个像素大小,你可以除以 4。为什么是 4?因为,为了更好地展示你的作品,它必须是一个偶数(比如 20×20)。GameSalad 会自动调整到较低的分辨率(即除以 2),所以需要是偶数!因此 4!

警告:图像的大小限制为 1024×1024。

如果你正在计划一个低分辨率的游戏(480 ×320),没有必要检查分辨率独立性。另一个取消选择此选项并计划低分辨率游戏的好理由是,旧设备(如第一代 iPod touch)将难以处理这些图形。一如既往,最好的建议是:测试,测试,再测试。

到目前为止,你阅读的页面提到了演员、场景和项目。所以你可能会很自然地问自己,“我读的书对吗?我以为我读的是游戏创作,一切看起来都像电影制作。我没钱请布鲁斯·威利斯来拍我的作品!”

是的,你正在看一本关于游戏设计的书。但是,把游戏创作想象成一部电影,有一个情节(游戏机制)、一些演员(角色或物体)和一个方向(行为和属性),不是更容易吗?

GameSalad 允许你像设计电影一样设计你的游戏。您将使用场景(闪屏、菜单、关卡、游戏)和演员在这些场景中进行交互。

添加演员

准备好扮演电影导演…呃…游戏导演的角色了吗?我们来捏造一些演员吧!

什么是演员?

演员是一个具有特定行为和属性的对象,您将把它放在场景中。通常,在乒乓球比赛中,球是一个演员。至于具体的行为,你会告诉球和一些球拍碰撞,和墙壁碰撞时该如何反应。球也将具有一些属性,这些属性将定义球本身;例如,它将是可移动的。

演员编辑器的视图如图 2-9 所示。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 2-9。??【行动家】

创造演员

创建执行元有两种方式:

  • Through project editing
  • Via scene editing

就我个人而言,我在创建场景时主要使用场景编辑器来创建新的演员,但是如果你是一个非常好的规划者,你可以在创建项目时使用项目编辑器来创建大多数(如果不是全部)演员。我将在这里用场景编辑器来创建一个演员。

点击图 2-10 中所示的场景图标。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 2-10。 场景图标

选择“初始场景”将打开场景编辑器。根据图 2-11 定位左侧的演员检查窗口。点按“执行元检查器”窗口下方的+号。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 2-11。 演员督察窗口

就这样!你刚刚创造了你的第一个演员!

修改演员属性

演员的属性可以通过行为来修改。但是首先你需要理解一个重要的概念。

实例或原型

在您继续之前,我需要介绍一个非常重要的概念(VIC ),即 actor 原型和 actor 实例。

actor 原型是您定义主 actor 的地方。您将定义参与者、其属性及其行为。

然后,每当您将这个演员放置在游戏的一个场景中时,就会自动创建这个演员的一个实例。实例将自动继承原型的属性(特性和行为)。

关于面向对象编程:

面向对象编程(OOP)是一种以对象为中心的编程概念。对象是一种数据结构,它包含关于对象以及操作(称为方法)的描述性信息。OOP 超出了本书的范围,但是也许你已经注意到了 OOP 和 GameSalad 之间的相似之处。参与者是对象,属性是描述信息,行为是方法。事实上,这并不奇怪。GameSalad 只隐藏了 iOS 开发的编程方面!iOS 开发语言是 Objective-C,你猜怎么着?Objective-C 是一种面向对象的编程语言。

如果需要修改特定实例的某些属性或行为,必须解锁该实例才能访问其属性和行为。场景属性,如摄影机或方向属性,只能从位于场景中的演员处访问。因此,您需要编辑执行元实例。

演员属性

为了更好地理解参与者属性的概念,您需要将属性视为描述参与者的项目。例如,要描述一个人类演员,你会提到头发的颜色(金发、棕色、灰色、深色或没有)、眼睛的颜色(蓝色、棕色、绿色)等。因此,属性是项目及其值的特征。

那么这在 GameSalad 中意味着什么呢?假设你有一个演员叫鲍尔。它可以是可移动的(是或否),它有高度和宽度,颜色等。

常用属性

让我们快速回顾一下一个演员最重要的属性。这些属性可从图 2-9 所示的参与者编辑器中访问。

名字

该字段包含执行元的姓名。使用特定的名称;如果你的项目中有很多演员,这一点尤其重要。

尺寸

你可以指定演员的大小。如果您计划使用图像,请输入图像的大小。

不要忘记关于尺寸的提示(要能被 4 整除!)

颜色

如果不使用图像,可以在演员中填充颜色。

标签

标签是一种将演员分组并让他们以相似的方式行为的方法。例如,您可以将一些参与者分组为可聚合的。然后,您可以定义一个规则,使一个特殊的对象(例如,一个球)与所有可碰撞标记的对象发生碰撞。

物理学/密度

位于物理学之下,密度代表一个演员的重量。GameSalad 实现密度的方式非常接近现实生活。根据 GameSalad 支持,GameSalad 的单位等于标准密度(千克/立方米)。

物理学/摩擦

位于“物理”下,该属性用于模拟摩擦力,摩擦力是两种材料接触产生的力。摩擦力的值越低,模拟反应就越柔和。值为 0 将模拟冰。

物理/可移动

位于“物理”下,该属性让您决定对象是否可以移动。如果不可移动,物体将处于固定位置。但是,演员将能够通过更改属性和插值行为进行移动。

这个列表并不详尽。更多的属性将在接下来的章节中介绍,您将学习如何创建一些自定义属性。

修改属性

要修改演员,请在场景编辑器的演员窗口中双击该演员。这将在 actor 编辑器中打开 Actor 原型。然后,您只需要访问 Actor 编辑器中的每个属性。让我们练习一下。

双击您之前创建的演员(演员 1),如图图 2-12 所示。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 2-12。 检查员中的演员 1

双击 Actor 1 打开 Actor 编辑器,如图图 2-13 所示。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 2-13。 演员编辑为演员 1

现在让我们更改以下属性:

  • 名称:Rack Player 1
  • Size/width: 16
  • Size/Height: 120
  • Color: white
  • Physical/density: 500
  • Physical/friction: 3
  • Physical/Recovery: 0
  • Physical/Fixed Rotation: checked (this will prevent the actor from rotating after colliding with the ball. )

现在保存您的项目。

关于归还属性:

恢复属性定义反弹度。零表示没有反弹!迷茫?为什么不用弹力呢?球弹不起来怎么回去?嗯,球会弹起来,不是球拍!(想象一下球拍弹到墙外。不太会玩。)恢复值为 1 意味着碰撞中没有能量损失(因此它是完全弹性的)。

添加行为

可以打开MyFirstPong_step2.gameproj从这个点开始。

为了向参与者添加动作,您需要添加行为。使用行为,您可以更改参与者的外观,为一些特定的动作设置一些条件,或者让他们根据计时器执行动作。因此,你使用行为来增加游戏的逻辑性。

什么是行为?

为了理解 GameSalad 中的行为,让我们继续类比人类演员。作为一名电影导演,你指导你的演员执行某些任务(比如当警察看到坏人时,警察会向他们开枪)。

在游戏中,行为指导你的演员。你可以指示一个演员,如果一个条件被满足,它会自动销毁自己。这是一个行为的例子。

你可以有动作的行为(如碰撞时如何反应)或检查特定条件的行为(如果分数低于 11,继续玩)。

有三种类型的行为:

  1. 出现一次的行为(这些行为的名称旁边有一个红色方框,里面有一个“A”字母)。
  2. 持续的行为(这些行为的名字后面有一个绿色方框中的字母“B”)。
  3. 使用条件来执行其他行为的规则(这些规则在其名称旁边的蓝色框中有一个“G”字母)。
添加行为

从 Actor 编辑器添加行为相当容易。在左下角,您可以访问行为库。您可以通过将目标行为拖放到行为区域来选择它。

如果需要创建规则行为,可以从行为列表中拖拽规则行为,也可以点击角色编辑器右上角的创建规则按钮,如图图 2-14 所示。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 2-14。 演员编辑

关于规则行为:

规则行为用于定义行为的条件。它可以是参与者或属性上的条件。它可以是一个条件,同时是几个条件,或者在给定时间是几个条件中的任何一个。

现在我们来练习。从上下运动开始。为此,创建一个规则,当一个键被按下时,一个行为(运动)被触发。

1.单击新建规则按钮。

2.单击“开”按钮旁边的“规则”,将规则重命名为“向下”

一条规则有三部分,如图图 2-15 所示。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 2-15。 一个规则的三个组成部分

规则条件位于规则的顶部。由于您可能有多个条件,因此您可以选择满足所有条件以触发行为,或者满足任何条件以触发操作。

3.将条件修改为“执行元接收事件”同样,选择“向下”键,如图图 2-16 所示。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 2-16。?? 降服的条件

4.如果满足条件,从“行为”库中,拖动移动行为(不是“移动到”行为)并将其放入规则的行为区域。修改方向为 270°的移动行为。

完整的规则如图 2-17 所示。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 2-17。 降格的行为

关于搬家行为:

移动行为有几个界限。

方向:您可以输入一个以度数表示的值或一个数学等式来定义演员将要采取的方向。例如,0 将使一个演员移动到他的运动参考点的东方(见下文)。

相对于:这定义了移动的参考点。你有两个选择:演员本身或者场景。相对于场景是在场景的绝对参照中的运动。如果相对于场景放置 0,演员将移动到场景的右边。如果相对于演员放置 0,演员将移动到他的右边,如果演员颠倒,这可能是场景的左边。

移动类型:您可以选择添加或堆叠。“相加”将累加其他“移动”或“移动到”行为的速度和方向,而“堆叠”将仅应用最近一次“移动”或“移动到”行为的速度和方向。

速度:你可以输入一个值或者打开公式编辑器,方法是点击数值框右边带“e”的小框,输入一个数学公式来定义运动的速度

试着自己创造向上的规则。这里有一些提示:

  • You can copy down rules by holding down the option, dragging down rules, renaming rules, and changing settings. Or, you can choose the downward rule, copy (Command+C), and then paste (Command+V). Another way is to create a new rule, just like you did with the Down rule.
  • The name of this rule is upward.
  • The condition of the rule is “Actor receives event”, and the key is “up”
  • Drag and drop a movement behavior, and change the setting according to the downward rule, but the direction is set to 90.

您可以打开MyFirstPong_step3.gameproj文件从这一点进行跟进。

在将该演员放到场景中之前,为每个架子再添加一个行为。将其位置约束在水平轴上。这意味着球拍会上下移动,但会在一个固定的水平位置(X 轴上的恒定值)。为此,请使用约束属性行为。

在行为库(图 2-14 )中,找到“约束属性”行为,并将其放入刚刚创建的“向上”规则下的“执行元行为”窗格中。若要选择要约束的属性,请使用属性浏览器。点按值输入栏右侧带有三个点的按钮。浏览至机架玩家 1 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传位置外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 X,如图图 2-18 所示。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 2-18。 属性浏览器

双击 X 属性进行验证。将该约束的值指定为 20,这会将球拍约束在距离屏幕左侧 20 个像素的垂直轴上。完整的行为如图 2-19 所示。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 2-19。 约束属性

现在,您已经准备好在场景中定位演员了。

向场景中添加演员

你已经为 1 号玩家创造了球拍。现在让我们把它放在现场。

回到场景编辑器,将演员放到场景中。位置只需要是近似的,因为你已经将球拍约束在 x 轴上,如图图 2-20 所示。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 2-20。 现场摆放球拍

点击预览!你在现场有一个球拍,可以用键盘的箭头键上下移动。

你可以通过打开fileMyFirstPong_step3.gameproj进入这个阶段。

创建其他演员

我已经带你通过一个非常详细的方法来为玩家 1 创建球拍。现在,您将创建一些剩余的演员。您将为玩家 2 定义球拍、球和墙,以获得定义的游戏区域。你还会增加一点力度,这样你就可以有快速的发挥。

我会更快地引导你,但我会突出一些新的项目,因为他们出现了。

球拍手 2

要为玩家 2 创建球拍,请创建一个新演员。双击这个新演员,在演员编辑器中对其进行编辑。按照以下方式更改属性:

  • Name: Luggage rack player 2
  • Size/width: 16
  • Size/Height: 120
  • Color: white
  • Physical/density: 500
  • Physical/friction: 3
  • Physical/Recovery: 0
  • Physical/Fixed Rotation: Checked

然后创建以下两条规则:

  1. 一个名为 Down 的规则。当“A”键被按下时,它将被触发(条件)。该行为将是一个方向为 270°的移动。
  2. 一个名为 Up 的规则。当“Q”键被按下时,它将被触发(条件)。该行为将是一个方向为 90°的移动。

最后,添加一个名为 Constrain Attribute 的行为,actor X 被约束为 460。

现在,把你的球拍放在现场。您可以近似放置它,因为位置约束会自动正确定位它。你的 Rack Player 2 编辑器屏幕应该看起来像图 2-21 。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 2-21。 Rack Player 2 编辑屏幕

现在,您将创建球。为了简单起见,您将创建一个 16 × 16 像素的方形球。这个 actor 将从另一个 actor 生成:Rack Player 1 或 Rack Player 2。在 GameSalad 词汇表中,我们说这个演员是衍生的

像往常一样,创建一个新的执行元,并在执行元编辑器中更改以下属性:

  • Name: Ball
  • Size/width: 16
  • Size/Height: 16
  • Color: red
  • Physical/Recovery: 1
  • Physical/fixed rotation: checked.
  • Physical/collision shape: circle

您有两个选项来定义演员将如何碰撞。形状可以是矩形或圆形。

球将从货架玩家 1 或货架玩家 2 中产生,这取决于哪个玩家为游戏服务。默认情况下,玩家 1 先发球开始游戏。得分的胜者将发球。要定义哪个玩家发球,使用一个关于玩家 1 是否发球的布尔属性。如果为真,玩家 1 发球;如果为假,则由 2 号选手发球。

在场景编辑器中,选择属性检查器窗口,点击+号创建一个新的布尔属性,如图 2-22 所示。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 2-22。 属性检查器窗口

将这个属性命名为P1Serving并检查它。

回到球演员的演员编辑器,创建一个新规则。该规则将检查哪个球员正在发球,并根据结果改变方向。为此,请使用规则的 Otherwise 部分。

创建一个新规则,称之为球的方向。条件是如果游戏的属性。P1Serving 是真的。在“改变速度”行为中拖移。

使用表达式编辑器更改方向。点击方向栏右边的小“e”,如图图 2-23 所示。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 2-23??。表情编辑器图标

这将打开如图 2-24 所示的表达式编辑器。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 2-24。 表情编辑

单击插入函数下拉菜单,选择随机(最小值,最大值)函数,并将最小值替换为-45,将最大值替换为 45。通过这样做,球将在-45 度和+45 度之间的方向上运动。然后,单击绿色复选标记实际插入该函数。图 2-27 提供了角度的直观表示。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 2-25。 球的方向(-45,+45)

在“其他”部分中拖移另一个“更改速度”行为,可通过点按规则底部“其他”文本前面的箭头来访问该行为,并将“方向”值更改为“随机(135,225)”,然后点按绿色复选标记。图 2-26 提供了角度的直观表示。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 2-26。 【球方向(135,225)】

你应该会得到一个类似于图 2-27 的规则。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 2-27。 球的方向规则

关于表达式编辑器:

表达式编辑器是高级编辑器,您可以在其中使用高级数学公式来定义复杂的动作和移动。我将在后面介绍更多数学方面的内容。

关于表达式编辑器,你需要知道一些提示:

1…用于显示多个属性。

示例:(actor.position.X)…(actor.position.Y)

2.“文本”用于显示文本。

示例:“X 位置:”…(actor.position.X)

3.\ "用于在双引号文本内的文本中插入双引号。

示例:“这是文本中的引用”

4.\32 用于在双引号文本中插入一个空格。

示例:“这是一个空间”

5.\n 用于在双引号文本中开始新的一行。

示例:“这添加了\n 一个新行”

让我们回到球拍,使他们能够产卵球。当空格键被按下时,球将被产生。你猜怎么着?你将使用一个规则。

在演员编辑器中打开 Rack Player 1。创建一个新规则,并将其命名为 Serving。条件是当 Actor 接收到事件并且按下空格键时。

你还需要检查是否轮到玩家 1 发球。为此,请使用您之前创建的属性 P1Serving。如果 P1Serving 为真并且空格键被按下,那么 Rack Player 1 将产生球。

通过单击+号在服务规则中添加新条件。条件将是如果属性游戏。P1Serving 是真的。

现在,在服务规则的行为区域添加一个 Spawn Actor 行为。将演员改为球,水平位置改为 16。这将会在球拍的正前方产生球。

发球规则应该类似于图 2-28 。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 2-28。 发球规则

现在,您可以对 Rack Player 2 进行同样的操作,只需进行以下修改:

  • In the attribute game state. P1 serving is fake.
  • The ovipositor is the ball, and the position is -16 (the ovipositor ball is on the left side of the racket).

图 2-29 显示了货架玩家 2 的发球规则。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 2-29。 架球员 2 的发球规则

您可以打开MyFirstPong_step5.gameproj文件来查看这一阶段的结果。通过在属性编辑器中将 P1 发球的值从 true 更改为 false,可以在预览模式下从球拍 1 或球拍 2 发球。

现在让我们在这个游戏周围放些墙吧!

墙壁

下一步是在游戏区域周围创建一些墙,并实现一些弹性。

像往常一样,创建一个新的演员。双击这个新演员,在演员编辑器中对其进行编辑。按照以下方式更改属性:

  • Name: bouncing wall
  • Size/width: 480
  • Size/Height: 10
  • Physical/density: 500
  • Physical/Recovery: 0
  • Physical/Fixed Rotation: checked
  • Physical/Removable: unchecked

回到场景编辑器。将反弹墙拖动到场景中,并将其放置在可见场景的正上方。将另一面反弹墙拖动到场景中,并将其放置在可见场景的正下方。参见图 2-30 查看结果。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 2-30。 场景与墙壁

通过将反弹墙拖动到场景中两次,您就创建了同一个演员的两个实例。如果在 actor 编辑器中双击 Actor,就可以修改原型,所有实例都会反映出修改。但是,如果您双击其中一个实例,您将只编辑该实例,而不编辑其他实例。

这有印象吗?这就是之前介绍的 VIC(非常重要的概念)。

标签

标签是非常有用的工具。它们是一种将演员分组在一起,然后将行为应用于标签(即演员组)的方法。您现在将创建的演员组是可聚合的演员组。

要创建一个新的标签,请按照图 2-31 点击主页图标。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 2-31。 首页图标

根据图 2-32 ,点击主屏幕左侧按钮的+按钮。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 2-32。 主屏幕

将标签命名为 Collidable。

拖动刚刚创建的标签右侧的四个对象。

双击 Rack Player 1 进行编辑。添加碰撞行为。根据图 2-33 ,配置与带有标签的“可碰撞”演员碰撞时的反弹行为。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 2-33。 碰撞行为

对 Rack Player 2、球和反弹墙重复相同的操作。

让我们玩吧

您可以打开文件MyFirstPong_step6.gameproj进入当前阶段。

你准备好参加你的第一场乒乓球比赛了吗?点击预览按钮。你现在可以打乒乓球了。使用向上和向下键控制玩家 1,使用 Q 和 A 键控制玩家 2。按空格键发球。

总结

恭喜你!您已经创建了第一个可玩的游戏。但这不是你唯一的成就。在本章中:

  • You learned the basic concepts of GameSalad.
  • You created your first project.
  • You created your first actors. You have achieved some player control.
  • You used the collision concept.

你喜欢这个过程吗?很好!但是你仍然有很多事情要做。在下一章中,您将执行以下操作:

  • Design a scoring system.
  • Manage which player serves.
  • Realize the touch detection of player 1’ s racket.
  • Implementation of CPU control player 2.
  • Display.

三、完成乒乓:得分和游戏互动

在前一章中,你在几分钟内创建了一个非常酷的游戏。您现在已经掌握了 GameSalad 的功能,但是您的项目还远远不够完美。在本章中,您将通过实现一些附加组件和微调 Pong 游戏来继续学习 GameSalad。

让我们记分吧

这场比赛谁赢了?打乒乓球的时候,获胜或者取得高分难道不是首要目标之一吗?但是要做到这一点,一个游戏需要一个评分系统。那你还在等什么?

对于 Pong 游戏,您将根据以下规则创建一个计分系统:如果您错过了球,您的对手将获得一分。第一个达到 11 分的玩家赢得游戏。

您可以打开文件MyFirstPong_step6.gameproj进行后续步骤。

知道一名球员是否错过了球的诀窍是创造一个无形的演员,当球接触到球时,他会探测到——但这个演员是不可碰撞的,所以球会穿过它。这个演员将覆盖游戏领域的整个高度。您还将借此机会销毁当前的球实例。这将释放一些内存资源。

关于记忆:

内存是 iOS 设备中的宝贵资源。尽管 iPhone 4S 可以拥有高达 64GB 的内存,但是为运行时分配的动态内存却非常有限(只有几 MB)。一旦一个演员对游戏的其余部分变得没有用了,就摧毁它是一个极好的做法。如果稍后需要您的演员,一种先进的性能优化技术是回收。第七章中的介绍了回收利用。

为了保持分数,创建两个属性来存储每个玩家的分数。

在场景编辑器中,选择“属性检查器”窗口,并通过单击+号创建新的整数属性。命名为 P1 分数。重复操作,但将属性命名为 P2 分数。

在场景视图中,创建一个新演员并更改以下属性:

  • Name: Left winning area
  • Size/width: 10
  • Size/Height: 320
  • Color /Alpha: 0
  • Physical/density: 0
  • Physical/Removable: unchecked

您可能已经注意到,这里没有选中固定旋转。固定旋转是为了防止一个演员在与另一个演员碰撞时旋转。由于该演员不会与任何其他演员发生碰撞,因此没有必要检查固定旋转。

你最终应该得到与图 3-1 相同的属性。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 3-1。 左侧胜利区属性

现在给那个演员添加一些规则和行为。

第一个规则将检测这个区域和球之间的重叠。创建一个规则,并将其命名为球检测规则。规则是“actor 接收事件”并与“ball”类型的 Actor“重叠或冲突”

将“更改属性”行为拖到规则中。改变设置来改变属性:游戏。P2 分数。然后,使用表达式编辑器(位于“到:”右侧的小图标)将 P2 分数属性自我递增 1。你的表情必须看起来像图 3-2 。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

**图 3-2。**P2 分数的自增

现在你可以记录玩家 2 的分数了。重复相同的步骤来记录玩家 1 的分数。

创建一个新的执行元,并更改以下属性:

  • Name: Right Winning Zone
  • Size/width: 10
  • Size/Height: 320
  • Color /Alpha: 0
  • Physical/density: 0
  • Physical/Removable: unchecked

接下来,添加一条规则来检测该区域和球之间的重叠。创建一个规则,并将其命名为球检测规则。规则是“actor 接收事件”并且与“ball”类型的 Actor“重叠或冲突”

将“更改属性”行为拖到规则中。行为改变属性:游戏。P1 分数。使用表达式编辑器将玩家 1 的分数自我递增 1。

返回到场景视图编辑器。拖动左侧获胜区域,将其放置在可视区域的完整左侧,如图图 3-3 所示。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 3-3。 现场定位左侧胜利区

按照图 3-4 ,在可视区域的完全右侧重复类似的动作。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 3-4。 现场定位右胜区

记录每个玩家的分数是很棒的,但是如果能看到分数就更棒了!为了在场景中显示文本,您将使用一个 actor 作为接收者容器。您将引入一种称为显示文本的新行为。此行为用于将文本显示到执行元中。

在场景编辑器中,创建一个新的演员并更改以下属性:

  • Name: P1 score
  • Size/width: 50
  • Size/Height: 50
  • Color /Alpha: 0
  • Physical/Removable: unchecked

将 Alpha 设置为 0 将使演员透明,但显示文本将保持可见。这是你获得最佳结果的方法。

为了在场景中完美地定位乐谱显示,请使用“更改属性”行为来约束其位置。将“更改属性”行为拖放到 P1 配乐演员的行为区域。然后选择 P1 分数。定位. X 属性并将其更改为 215。一旦选定,它将显示为 self.Position.X。使用 P1 分数重复该操作。将位置. Y 更改为 295。

最后但同样重要的是,拖动显示文本行为。显示文本行为如图 3-5 所示。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 3-5。 显示文本行为

在“显示文本行为”框中,您可以输入自己的文本或访问表达式编辑器。您有几个选项来设置文本格式,如选择对齐方式、字体、大小和颜色。“在执行元内换行”选项创建换行符,以便文本适合执行元。

在刚刚放下的“显示文本行为”框中,打开表达式编辑器并选择以下属性:game。P1 分数。将大小设置为 20,并选择橙色,以便在场景中清晰可见。

图 3-6 显示了最终结果。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 3-6。 P1 配乐演员

重复相同的动作序列,创建 P2 分数演员,显示游戏。P2 得分,并将演员约束到位置(265,295)。图 3-7 显示了最终结果。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

**图 3-7。**P2 得分

回到场景编辑器,将 P1 分数和 P2 分数放到场景中。

在跳到下一段之前,你需要在重点阐述后释放内存。为此,请对球本身使用“破坏”行为。

在演员编辑器中打开球并创建一个新规则。将新规则命名为 Destroy。该规则将有两个条件,但要满足其中的“任何”条件。要使用“任何”选项,请在“当‘所有’条件有效时”中单击“所有”,然后选择“任何”

第一个条件是“参与者接收事件”并且与“左获胜区域”类型的参与者“重叠或冲突”

第二个条件非常相似:“actor 接收事件”并且与“右获胜区域”类型的 Actor“重叠或冲突”

然后,拖放一个销毁行为。此行为没有选项设置。当您之前设置的任何条件有效时,它将销毁 actor 的实例。你的规则应该看起来像图 3-8 。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 3-8。 破坏球

您可以打开文件MyFirstPong_step7.gameproj进入当前设计阶段。

一切都是为了王牌!

你准备好赢得比赛了吗?在开始比赛之前,你需要创建两个额外的游戏功能:赢得分数和提供下一个球。

在这一点上,玩家 1 不仅可以发球,还可以同时将无限数量的球送入游戏。如果你不相信我,请多次按空格键。

发球特点:得分的胜者发球

实现“得分的人将为下一个球发球”这个功能相当容易,尤其是因为您已经设置好了几乎所有的东西。由于你在比赛中只有两名球员,所以只能由一号球员或二号球员发球。另一种说法是,参与人 1 发球与否(如果不发球,那么参与人 2 发球)。

在上一章中,您创建了一个服务属性,现在您将重用该属性。属性 P1Serving 将根据哪个玩家得分而被修改。

双击演员编辑器中左侧的获奖区域演员,将其打开。你已经有了一个得分的规则。向此现有规则添加一个更改属性,以修改除分数之外的 P1Serving 属性。规则检测 2 号玩家何时得分。在这种情况下,轮到 2 号选手发球了。因此,P1Serving 应设置为 false。

将更改属性行为拖到球检测规则中。设置游戏。P1 为 0,如图 3-9 中的。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 3-9。 将 P1Serving 改为 false

关于布尔:

布尔属性是真/假属性。为了节省一点时间,你可以用 0 和 1 分别代替 true 和 false。GameSalad 会自动将 0 关联到 false,将 1 关联到 true

用右胜区重复操作;这个时间游戏。P1Serving 必须设置为 1,如图 3-10 中的所示。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 3-10。 变 P1 为真

在比赛中一次只保留一个球

现在,让我们把游戏中的球数限制在一个。(你可以稍后再做决定,并根据你自己的游戏规则进行调整。)

您将使用一个布尔属性,一旦产生了一个球角色,该属性将被更改为 true,当球被销毁时,该属性将被更改为 false。然后,您将修改 spawn 行为,以在生成球之前检查这个新属性是否为 false。

在场景编辑器中,选择属性检查器窗格。根据图 3-11 创建一个新的布尔属性。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 3-11。 一个新的布尔属性

将该属性命名为 ActiveBall,不要选中它,因为最初游戏中没有球。

让我们回到产卵行为。请记住,球是产卵,但球拍是产卵。所以你需要修改球拍演员的行为。

打开 Rack Player 1,在发球规则中添加一个新条件。条件是如果游戏。ActiveBall 是假的。然后,您需要添加一个更改属性行为,该行为将在球产卵的同时发生。将一个更改属性拖到 Spawn actor 和 implement game 下面。主动球到 1。这会将属性更改为 true,防止当空格键按下时产生新的球。图 3-12 显示了修改后的发球规则。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 3-12。 修改架上球员 1 号发球规则

对 Rack Player 2 重复该操作。

最后但同样重要的是,您需要修改球角色的销毁行为,以表明游戏中不再有活动的球。双击球演员。将“更改属性”行为拖到“销毁”行为上方,并将“活动球”属性更改为“假”。你的规则应该看起来类似于图 3-13 。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 3-13。 修改破坏行为

在预览中启动游戏并检查适当的行为。

您可以打开文件MyFirstPong_step8.gameproj到达这一步。

你有触觉吗?

真正的乐趣现在开始了!您将开始使用 iOS 设备的一些硬件功能。第一个是你设备的触摸界面。您将实现两个函数。当你点击屏幕时,第一个会产生一个球。第二个会用手指移动 Rack Player 1。

轻轻一碰就端上来的

你将只为玩家 1 实现接触式发球。这个想法是,到本章结束时,你将能够在电脑上玩玩家 1!

这样做大约需要 5 秒钟。是的,你没看错!只有 5 秒钟。

双击 Rack Player 1 以编辑器模式打开演员。修改发球规则的第一个条件:用“touch”替换“key”然后选择“外部”因此,不是让玩家按下空格键来产生一个球,而是玩家触摸屏幕,球拍将产生一个球。你的发球规则应该看起来像图 3-14 。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 3-14。 触球发球

现在你想用一根手指移动 1 号选手的球拍。记住球拍被限制在一个特定的水平值上。它只能上下移动。所以你只需要在 y 轴上工作。

诀窍是检测触摸,收集触摸的 y 轴值,并将球拍动作者约束到该值。为了收集触摸位置的值,您将使用鼠标设备。

该鼠标设备

鼠标特殊对象是设备类别中 GameSalad 内部的一个对象。“设备”类别帮助您利用 iOS 设备的硬件功能。在这里,您可以使用加速度计、屏幕、音频、时钟、触摸和鼠标功能。鼠标功能代表您触摸屏幕的位置,您通过位置属性收集这些信息。

尽管如此,还是有一些非常重要的事情要做,才能让它发挥作用。球拍不得移出可视区域。你通过只考虑 60°和 260°范围内的触感来管理这一点。

  1. 创建一个新规则,并将其命名为触摸检测。
  2. 添加以下条件:Actor 接收内部触摸事件(您可以将“内部”替换为“按下”)。
  3. 添加两个附加条件:
    • 属性,游戏。鼠标。位置. y,>,60
    • 属性,游戏。鼠标位置 y,
  4. 添加 Rack Player 1 的约束属性。到 game.Mouse.Position.Y

完成的规则应该看起来像图 3-15 。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 3-15。 触摸法则

你可以通过打开文件MyFirstPong_step10.gameproj进入这个阶段。

给你的游戏一个大脑

iOS 设备功能强大,但用 GameSalad 实现人工智能是不可能的。然而,只要有一点点想象力,你就可以实现一些规则和行为。

您将分两个阶段实现。你会察觉到球何时来到球员 2 的球拍上;当球穿过半个屏幕时,您将收集球的 y 值,并将该值存储到一个属性中。您将使用第二个属性来限制球拍的移动。第二步将是移动球拍到这个值。

检测方向,得到 Y 值
  1. 创建一个真实属性,并将其命名为“predict”
  2. 创建一个布尔属性,并将其命名为“positionyourself”,默认值为 false(不选中)。
  3. 在演员编辑器中打开球演员。
  4. 创建新规则并添加以下条件:
    • 属性,球。Motion.Linear.Velocity.X,≥,0:这样会检测球的运动方向。如果该值为正值,x 值将增加。所以运动将从左到右,进入玩家 2 的球拍。
    • 属性,球。Position.X,≥,240:这是球越过屏幕一半的时候。
    • 属性,球。Position.X,≤,300:这是球反弹到球拍上之前。
  5. 添加约束属性行为并将 game.predict 配置为 ball。位置 Y
  6. 添加更改属性行为并将 game.positionyourself 配置为 1。
  7. 在 Otherwise 部分添加一个最后更改属性行为,并将 game.positionyourselfto 配置为 0。

完成的规则按照图 3-16 所示。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 3-16。 移动检测和定位

移动球员 2 号球拍到存储值
  1. 在 actor 编辑器中打开 Rack Player 2 actor。
  2. 创建新规则并添加以下条件:
    • 属性 game.positionyourself 为真。

这将检测自身移动到存储位置的允许时间。

3.将移动拖到行为。

4.按照图 3-17 配置约束属性。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 3-17。 约束属性

你还需要在发球功能上做一个修改,让 2 号选手在赢得一分后可以自动发球。为此,只需通过滚动鼠标并单击条件旁边的-号来删除按下空格键的条件。

修改后的规则如图 3-18 所示。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 3-18。 修改发球规则

打开MyFirstPong_step11.gameproj可以直接到达这一步。

乓,跟我说话

Pong 项目的最后一个润色是添加一些与玩家交互的关键消息。GameSalad 没有语音功能,但可以在 iOS 设备屏幕上显示文本信息。就像之前处理乐谱一样,您将使用一个 actor 向用户显示一些关键的交互消息。

在场景视图中,创建一个新演员并更改以下属性:

  • Name: display
  • Size/width: 360
  • Size/Height: 100
  • Color /Alpha: 0
  • Physical/Removable: unchecked

为了在场景上完美地定位乐谱显示,您将使用“约束属性”行为来约束该位置。

将约束属性拖放到显示角色的行为区域。然后选择显示。定位. X 并将其约束为 240。用显示器重复操作。Position.Y 和 160°的约束。

创建具有以下条件的新规则:

  • Attribute game. active ball

  • Attribute game. P1Serving is true.

拖动一个显示文本行为,并按照图 3-19 进行配置。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 3-19。 显示按键信息

最后但同样重要的是,将演员拖放到场景中。

打开MyFirstPong_step12.gameproj可以直接到达这一步。

让我们在你的设备上玩吧

是时候使用 GameSaladiOS 查看器了。

在 iOS 设备上启动 GameSaladiOS 浏览器,点击 iPhone 上的预览按钮或 iPad 上的预览按钮。你的 GameSalad 将看起来像图 3-20 。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 3-20。iOS 浏览器中的Pong

总结

从第二章开始,你已经走了很长一段路。你现在有了一个分两章构建的全功能游戏。

在本章中,您了解了:

  • Score management
  • serve
  • Implement artificial intelligence, so player 2 is controlled by CPU
  • Join the game/player interaction

我希望你喜欢开发和玩乒乓游戏!

四、越狱:实现评论、加速度运动、生活管理和暂停

这一章将讲述翻拍著名电影《越狱》的第一部分。在你开始设计这个游戏之前,我想先介绍一下这个游戏的历史。

雅达利在 1976 年开发了 Breakout ( 图 4-1 )。Pong 发布四年后,Breakout 立即成为一款街机游戏。后来雅达利发布了视频游戏机版《突围》。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 4-1。 突围楼主

诺兰·布什内尔和史蒂夫·布里斯托从单人乒乓游戏的想法发展出了这种游戏。球员用球拍击球来摧毁墙上的砖块。如果球员错过了球的回归,他就输了。

最初的《越狱》讲述了一名囚犯试图用球和链条打碎砖块逃跑的故事。有两个层次。第一层由八排四种不同颜色的砖块组成(每种颜色两排,如图图 4-2 )。用球和球拍,玩家必须摧毁所有的砖块。玩家每升一级可以获得 448 分。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 4-2。 雅达利 2600 家庭版突围

一点小注意:

最初的街机版 Breakout 是用黑白屏幕制造的。Atari 在屏幕上使用了一些彩色的透明胶带来呈现颜色。

一点小注意:

史蒂夫·乔布斯和史蒂夫·沃兹尼亚克参与了《越狱》的开发。他们致力于优化游戏中的电路板,以减少晶体管的数量。

本章将涵盖以下主题:

  • Strengthen your basic game skills.
  • Add comments to your work.
  • Use accelerometer to control your game
  • Manage life and game ending process
  • Add a pause function to your game

打下基础

在本节中,您将快速创建游戏的基本元素。您将从创建参与者开始,然后为每个参与者定义规则和行为。最后,您将在场景中定位演员。

您可以通过直接打开文件BreakaWall-step1.gameproj来快速启动本节。

定义新项目

首先打开 GameSalad creator。在“新建项目”下,选择“我的伟大项目模板”,然后单击“在 GameSalad Creator 中编辑”。

按照表 4-1 配置项目信息。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

单击文件外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传另存为保存您的项目。命名为BreakaWall.gameproj

定义演员

在这个游戏中,您将创建以下角色:

  • racket
  • fragment of a brick
  • ball
  • Vertical wall
  • Hengqiang
  • Transport area
  • show
球拍

球拍由球员控制,将球反弹回砖块。

创建一个新的 actor,双击它打开 Actor 编辑器。

用表 4-2 中的参数编辑演员属性。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

砖块构成了要摧毁的墙的单一元素。创建一个新的 actor,双击它打开 Actor 编辑器。用表 4-3 中的参数编辑演员属性。

球是在运动区域内弹跳的运动元素。创建一个新的 actor,双击它打开 Actor 编辑器。用表 4-4 中的参数编辑演员属性。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

垂直墙

墙是用来界定游戏区域的。创建一个新的 actor,双击它打开 Actor 编辑器。用表 4-5 中的参数编辑演员属性。

水平墙

创建一个新的 actor,双击它打开 Actor 编辑器。用表 4-6 中的参数编辑演员属性。

失败地带

与 Pong 游戏中的获胜区域类似,您将在球拍下方创建一个失败区域,以检测玩家何时错过了球。创建一个新的 actor,双击它打开 Actor 编辑器。用表 4-7 中的参数编辑演员属性。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

显示

display actor 用于在屏幕上显示信息。创建一个新的 actor,双击它打开 Actor 编辑器。用表 4-8 中的参数编辑演员属性。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

创建可绑定标签

您将重复对 Pong 采用的方法,为所有将发生碰撞的角色创建一个可碰撞的标签。

创建一个新的 actor 标签,并将其命名为“Collidable”

将以下角色拖放到可绑定的标签上:

  • brick
  • racket
  • ball
  • Hengqiang
  • Vertical wall
定义属性

和前面的章节一样,属性将在你的游戏工程中扮演重要角色。

ActiveBall 属性将用于了解一个球是否已经在屏幕上活动,如果是,防止用户在游戏中产生另一个球。为此,您将使用一个布尔值。

BrickCount 将用于知道球何时破坏最后一块砖。您将使用屏幕上砖块的初始数量来设置这个整数属性。那么每一块砖被破坏一次,你将减少这个整数。

TextToDisplay 将用于与玩家交流游戏信息。

根据表 4-9 创建属性。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

实现规则和行为

参与者、属性和标签现在都设置好了。但是还没有实现任何逻辑和交互。接下来的步骤将添加规则和行为,这些规则和行为将为每个参与者定义游戏逻辑。

球类规则和行为

为了在球产生时给它一个初始运动,你将使用一个改变速度的行为。

根据图 4-3 ,将一个变化速度行为拖放到演员中,并以 300 的速度将设置更改为相对于场景的随机方向(70,110)。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 4-3。 球的初速度

接下来,您需要确保球将与所有可碰撞的角色碰撞,因此使用碰撞行为。

根据图 4-4 ,将碰撞行为拖放到演员中,并将设置更改为“带标签的演员:”和“可碰撞”。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 4-4。 球的碰撞行为

让我们来制定球员丢球时的规则。您将使用与 Pong 游戏相同的逻辑。一个演员将被定位在球拍下面,当球与它重叠时,它将破坏球,并将属性 ActiveBall 更改为 false。

单击“创建规则”并添加条件“执行元接收事件”“重叠或冲突”与“执行元类型”“松散区域”拖放一个改变属性行为和改变游戏。主动球到 0。然后,将销毁行为拖放到更改属性行为的正下方。你的规则应该类似于图 4-5 。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 4-5。 松绑

接下来,创建一个规则,当最后一个砖块被摧毁时,这个规则将摧毁这个球,并且还将显示文本“你赢了!”点击创建规则并添加条件“属性”“游戏。BrickCount"“=”"0。"拖放一个改变属性行为和改变游戏。TextToDisplayto“你赢了!”然后,将销毁行为拖放到更改属性行为的正下方。你的规则应该类似于图 4-6 。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 4-6。 结束游戏

如果你玩过很多乒乓游戏,你可能会注意到球有时会卡在水平方向;这很无聊。为了避免这种情况,我们引入一个扰动。你会监控球,只要它被水平或垂直卡住,你就会添加一个随机效果来改变下一次反弹。为了达到这个目的,你必须监控球的线速度。线速度是在二维平面的轴之间的运动。如果 Y 的线速度为 0,这意味着球保持恒定的 Y 位置。换句话说,你的球在以完美的水平运动(球卡在左右墙之间)。如果 X 的线速度为 0,这意味着球保持恒定的 X 位置。换句话说,你的球正以完美的垂直运动方式运动。

单击创建规则并添加条件“属性”“球”。运动。线速度。Y"“=”"0 "。拖放一个规则行为,并添加条件“执行元接收事件”“重叠或冲突”和“带有标签的执行元”“可碰撞”然后拖拽一个改变属性行为和改变球。运动。线速度。y 到 random (70,120)。你的规则应该类似于图 4-7 。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 4-7。 防止横向堵塞

单击创建规则并添加条件“属性”“球”。运动。线速度。X"“=”"0 "。拖放一个规则行为,并添加条件“执行元接收事件”“重叠或冲突”和“带有标签的执行元”“可碰撞”然后拖放一个改变属性行为和改变球。运动。线速度。x 到 random (70,120)。你的规则应该类似于图 4-8 。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 4-8。 防止垂直堵塞

球拍规则和行为

根据图 4-9 ,将碰撞行为拖放到演员中,并将设置更改为“带标签的演员:”可碰撞“。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 4-9。 球的碰撞行为

将约束属性行为拖放到演员中,并更改球拍的设置。根据图 4-10 将 Y 轴定位到 40°。这将把球拍垂直地限制在它的位置上。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 4-10。 约束球拍属性

现在创建两条规则来实现球拍的移动。就像你之前做的那样,你将使用按键来左右移动球拍。

单击“创建规则”并添加条件“参与者接收事件”“按键”“左”键盘“按下”拖放移动行为并将设置更改为:

  • Direction: 180
  • Relative: actor
  • Type of movement: addition
  • Speed: 300

你的规则应该类似于图 4-11 。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 4-11。 左运动规律

单击“创建规则”并添加条件“参与者接收事件”“按键”“右”键盘“按下”拖放移动行为并将设置更改为:

  • Direction: 0
  • Relative: actor
  • Type of movement: addition
  • Speed: 300

你的规则应该类似于图 4-12 。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 4-12。 右运动规律

最后,创建一个规则,当屏幕被触摸到演员之外并且没有活动的球时,生成一个球演员。

单击“创建规则”并添加条件“执行元接收事件”“接触”为“外部”添加第二个条件来检查游戏。ActiveBall 属性。条件将是“游戏属性”。ActiveBall”是“假的”拖放“繁殖演员”行为,并将设置更改为:

  • Actor: Ball
  • Layer order: in actors
  • Front: Random (75,135)
  • Relative to: actor
  • Location: 0, 10
  • Relative to: actor

拖放一个改变属性行为和改变游戏。主动球到 1。你的规则应该类似于图 4-13 。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 4-13。 产卵球演员法则

砖块规则和行为

砖头演员只有一条规则。该规则将检测与球的碰撞,然后销毁演员并减少 brickCount 属性。

单击“创建规则”并添加条件“执行元接收事件”“重叠或冲突”与“执行元类型”“球”拖放破坏行为。拖放一个改变属性行为和改变游戏。砖块计数到游戏。BrickCount-1。你的规则应该类似于图 4-14 。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 4-14。 砖头统治

显示文本规则和行为

在这个阶段,最后一个需要行为的参与者是显示文本。它将在场景中永久显示文本属性的内容。诀窍在于,在赢得游戏之前,属性将是空的。

拖放一个显示文本属性,并将文本设置更改为“game.TextToDisplay”。您可以保留所有其他默认设置。你的行为应该类似于图 4-15 。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 4-15。 显示获奖文本

场景布局

下一步是确定演员在现场的位置。将您的演员拖到场景中,并尝试匹配图 4-16 。为了创建该演员的六个实例,您需要将砖块拖动到场景中六次。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 1-16。 第一步场景

虽然不可见,但将显示演员拖到场景的中心。

评论你的作品

如果你跳过了前一部分,你可以直接打开文件BreakaWall-step1.gameproj从这一点继续。

该不该写评论?什么是好的评论?我必须承认,我以前很讨厌写评论。我认为这是无用的,并转移了我的目标:编码!但这是不对的!首先也是最重要的,评论让你的游戏设计更加清晰。通过注释,你可以描述参与者的责任或者规则的意图。接下来,它让你的游戏项目更容易被其他人理解。当你在一个团队中工作时,如果你包括正确的评论,你将会为你的同事节省大量的时间。一个好的注释提供了关于你的设计策略和规则中任何微妙安排的有用信息。

要添加注释,请使用 GameSalad 的注释行为。它可以作为任何行为放在“执行元行为”面板或规则中。让我们稍微练习一下。

在演员编辑器中打开球拍演员。将音符行为拖放到行为堆的顶部。键入以下注释:

`The Racket is the paddle to be controlled by the player.

The racket will collide and bounce with collidable objects.

The racket will be constrained on the Y=40 axis.`

你的评论应该类似于图 1-17 。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 1-17。 球拍总评

现在,将音符行为拖放到左移动规则上方。键入以下注释:

`When the left key is pressed, the actor will move to the left direction.

When the right key is pressed, the actor will move to the right
direction.`

你的评论应该类似于图 1-18 。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 4-18。 点评球拍移动规则

从这一步开始,我不会告诉你写哪个注释,但是项目文件将包含我的一些注释。请随意阅读。

用加速度计移动桨

从这一点出发,您可以简单地打开文件BreakaWall-step2.gameproj

让我们找点乐子!为了移动球拍,你将使用 iOS 设备的内置加速度计。为了创建这样的功能,您将再次使用设备属性,尤其是加速度计。事实上,您需要在加速度计的 X 轴上进行检测。

在演员编辑器中打开球拍演员。在左移规则中,添加一个新条件。条件是“属性”“game . accelerator . x”图 4-19 。

这种基于加速度计的运动实现在这个阶段是粗略的,并且没有考虑运动中的任何倾斜量。这只是第一步。你将在第八章中学习更高级的方法。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 4-19。 用加速度计向左移动的规律

加速度计

加速度计测量设备自身在三维空间中的加速度。iOS 设备中的传感器会捕捉每一次移动和倾斜,因此它可以计算设备的方向和许多其他用途(例如设备正在向哪个方向移动)。

当你将 iPad 置于纵向模式时,按照图 4-20 ,X 轴将指向你。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 4-20 。纵向模式下的 iPad

负加速度是绕 x 轴逆时针旋转,如图 4-21 中的所示。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 4-21。 逆时针旋转

正加速度是围绕 x 轴的顺时针旋转,根据图 4-22 。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 4-22。 顺时针旋转

因为您想要捕捉预期的运动而不是振动,所以您选择触发值 0.05。你可以在这个值上打转,找到一个你觉得最舒服的值。

让我们修改右移动规则,以包括加速度计条件。在右移规则中,增加一个新条件:“属性”“game . accelerator . x”“0.05”。您还需要将“All”改为“Any”,例如“When 'Any '条件有效。”就这样!您的新规则将类似于图 4-23 。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 4-23。 带加速度计的右运动规律

如果您从纵向更改为横向或支持两种方向,您将需要更改您的加速度计规则。

通过在球拍的演员编辑器中单击“创建组”,为球拍创建一组行为。将两条规则拖放到组中。

您刚刚创建的规则适用于纵向方向。你需要把它们颠倒过来,变成纵向颠倒的方向。用 GameSalad 做到这一点非常容易。创建一个检测屏幕方向的规则,并相应地启用正确的规则。

创建一个带有“属性”条件的新规则“游戏”。屏幕。设备方向为“纵向”然后拖放新创建的组。新规则应如图 4-24 中的所示。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 4-24。 人像定向规则

选择您刚刚创建的规则,然后按 Command + C 来拷贝该规则。按 Command + V 粘贴该规则,并更改以下设置:“纵向”为“纵向颠倒”,然后第一个向左移动的子规则会将其条件更改为“>”“0.05”,第二个向右移动的子规则会将其条件更改为“图 4-25 。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 4-25。??【肖像颠倒定向法则】??

您现在可以管理设备的方向了!

演习

在 iOS 查看器中测试此项目。遵循上一章的说明。您还将更改“自动旋转”属性,以启用纵向颠倒。为此,在场景编辑器中,按照图 4-26 中的单击场景按钮,并展开自动旋转属性。将肖像旁边的方框打勾。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 4-26。 场景属性检查器

管理生活和游戏结束过程

从这一点出发,您可以简单地打开文件BreakaWall-step3.gameproj

为了让游戏更真实,你可以给玩家三条命。这意味着第三次错过球,你将显示一个游戏结束的消息,玩家将无法产生一个新的演员。您还将显示一个重试按钮,该按钮将重置场景,并让玩家尝试再次获胜。

您可能已经猜到了,您将使用一个属性来管理生命。每错过一次球,你将减少 1 的属性。您将添加一个条件,在生成新球之前检查生命数是否严格优于 0。在显示文本中,当生命属性等于 0 时,您将有一个显示游戏结束消息的规则。

游戏设计时间到了!创建一个新的整数属性,将其重命名为“lives”,并将默认值设置为 3。你的属性将看起来像图 4-27 。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 4-27。 生命属性

双击角色编辑器中的球角色,将其打开。在输区规则中,拖放一个更改属性行为,并将其放置在游戏之间。主动球改变属性行为和破坏行为。将 game . lifes 修改为 game . lifes-1。

输区规则将如图 4-28 所示。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 4-28。 修改了输区规则

接下来,创建一个新规则,并将条件更改为" Attribute"“game.lives”“=” "0 "。这将检测何时不再有生命可用。拖放一个改变属性行为和改变游戏。短信显示“游戏结束!–按图 4-29 中的点击此处重试】。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 4-29。 游戏结束显示规则

您需要修改附加到球拍 actor 的球生成规则,以便添加关于生命数的条件(> 0)。

在演员编辑器中打开球拍演员。根据图 4-30 ,选择生球规则并添加以下条件:“Attribute”“game . lives”>“0”。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

**图 4-30。**修改了球的产卵规则

您就快成功了,但是您需要在游戏结束时实现重试功能。这相当容易。您将使用重置游戏行为。

关于重置游戏和重置场景:

虽然听起来很明显,重置场景只会重置场景而不会重置游戏。当你有一个多级游戏并且你想给玩家更多的尝试机会时,这是非常有用的,但是记住重置场景只会重置场景,同样地,游戏属性不会被重置。所以在你设计游戏的时候,花点时间想想哪些属性应该是游戏或者场景属性。

在 actor 编辑器中打开显示 Actor,根据图 4-31 创建一个新规则。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 4-31。 重试功能

添加暂停功能

从这一点出发,您可以简单地打开文件BreakaWall-step4.gameproj

在 GameSalad 中暂停是非常容易的,但是你需要理解这个概念以便有效地使用它。

暂停行为将在当前场景的顶部覆盖一个新场景,并暂停当前场景的所有物理效果。它不会暂停音乐、声音或计时器。为了有效地构建暂停函数,您需要:

  • An actor who can trigger a pause.
  • A scene used as a pause picture.
  • Pause a button on the screen to resume the game.

让我们把这一切付诸实践。

创建一个新场景。单击“主页”按钮并选择“场景”选项卡。然后点击左下角的+号。通过单击名称来重命名场景。键入“Pause”作为场景名称。

根据图 3-32,你的项目中现在有两个场景。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 3-32。 场景视图

创建新演员。用表 4-10 中的参数编辑演员属性。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

拖拽一个显示文本属性,根据图 4-33 改变设置。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 4-33。 暂停显示

创建新规则并添加以下条件:

  • “Actor receives event” and “Touch” is “Press”
  • “attribute” “dance academy” > [0]

然后拖放暂停游戏属性,并选择您先前创建的暂停场景。完整的规则如图 4-34 所示。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 4-34。 暂停规则

现在如图 3-35 所示,将暂停演员放置在屏幕的左上角。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 3-35。 定位暂停演员

通过单击“场景”按钮,选择新创建的名为“暂停”的场景。

创建一个名为 ResumeGame 的新演员。用表 4-11 中的参数编辑演员属性。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

拖拽一个显示文本属性,根据图 4-36 改变设置。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 4-36。 恢复游戏显示

创建新规则并添加以下条件:

  • “Actor receives event” and “Touch” is “pressed”

然后拖放一个未暂停的游戏属性。完整的规则如图 4-37 所示。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 4-37。 取消暂停游戏规则

最后,你需要将简历演员放在屏幕中央。就这样!你的游戏有暂停功能!

您可以打开文件Breakawall-step5.gameproj来达到这一点。

在第九章中,你将继续为这个游戏工作。同时,你将发展物理、重力、音频和图形效果方面的技能。

总结

你即将创造一个新的阿卡迪亚人!你的文件夹里还有第二个游戏。

在本章中,您将:

  • Strengthen your basic game skills.
  • Add comments to your work.
  • Use accelerometer to control your game.
  • Manage the process of life and game ending.
  • Added pause function to your game.

五、制作射击游戏:胡萝卜入侵者

当我还是个孩子的时候,我记得我的父母试图让我吃完我的胡萝卜泥。“吃了这个,你会有好看的皮肤!”啊啊。!!我还是会做关于胡萝卜的噩梦!这就是为什么,为了向最著名的电子游戏之一致敬,你会用胡萝卜而不是外星人来翻拍《太空入侵者》。

《太空入侵者》是一款日本游戏,由台东公司于 1978 年发行。Taito 最初是一家在日本从事自动售货机贸易的进出口公司。他们在 60 年代进入了游戏行业。最近,Square Enix 在 2005 年收购了 Taito。Square Enix 在游戏界因《最终幻想》游戏而闻名。

《太空入侵者》的灵感来源于 Taito 之前的一款名为《太空怪兽》的电子机械游戏。《太空入侵者》对 Taito 来说是一个巨大的成功。游戏的街机版如图图 5-1 所示。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 5-1。 一个太空入侵者的街机柜。

《太空入侵者》是一款射击游戏。你控制一艘飞船,用大炮向敌人射击。敌人是成列从左向右移动的外星人(有时会向下移动几个像素)。目的是在所有的敌人降落在地球上并开始入侵之前向他们射击。

在本章中,您将通过创建另一个包含演员、规则和行为的新项目来练习 GameSalad 的基础知识。您还将了解图像的管理以及如何将图像用于演员。本章还将涵盖以下内容:

  • Introduction to Mathematics Creating Complex Actions
  • The visual effect of the spacecraft moving motionless.
  • Manage interpolation behavior of energy bars.
  • Change scene behavior to transition scene

准备场景的基本元素

根据上一章,您可以通过直接打开文件CarrotInvaders-step1.gameproj来跳转到本节。

在本节中,您将为胡萝卜入侵者项目创建一个新项目。然后你会把重点放在项目的演员身上。您将强化您在演员创建、规则和属性设计方面的技能。您还将学习一些新的东西:图像特性,比如导入图像、检查器以及向演员添加图片。

创建胡萝卜入侵者游戏项目

打开游戏沙拉创建器,创建一个新项目。根据表 5-1 配置项目信息。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

将文件命名并保存为Carrot_Invaders.gameproj

艺术家入口:创造演员

《胡萝卜入侵者》需要以下演员:

  • Carrots; Use as an enemy
  • Spacecraft; Act as a hero
  • Background; Used to create situations.
  • Bullets; Used to destroy the enemy
  • Walls; Used to define scenes.

在创建演员之前,您将做一些新的事情。你将为你的演员准备一些服装。是的,你会在上面放一些衣服(衣服,我的意思是你会用图片)。稍后我将为您提供更多关于 GameSalad 中图形和图形优化的信息;本章重点介绍如何在 GameSalad 中导入和使用图像。

要在屏幕上显示图像,你需要一个演员。但是为了让 actor 访问图像,必须首先将图像导入 GameSalad。

在 GameSalad 中导入图像很容易。在场景编辑器中,根据图 5-2 选择行为选项卡旁边的图像选项卡。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 5-2。 场景编辑器用图像选项卡选中

单击右下角的+号打开系统选择窗口,选择要导入的文件。

**注意:**图像可以通过其他几种方式导入。它们可以直接从桌面或文件夹拖到图像部分。它们可以从桌面或文件夹中拖到一个 actor 上。也可以通过右键单击来添加它们。gameproj 文件,选择“显示包内容和图像”并把它拖到那里,但这不是推荐的。

将以下文件导入到第五章文件夹下的图像资源中:carrot.pngbackground.pngspaceship.pngtomato.pngexplosion.png(根据图 5-3 )。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 5-3。 导入图片

当您创建参与者时,请注意,如果没有特别提到这些属性,默认情况下会保留该值。

创造敌人:胡萝卜

创建一个新的 actor,双击它打开 Actor 编辑器。

用表 5-2 中的参数编辑演员属性。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

单击图像选项卡以显示您刚刚导入的图像。按照图 5-4 将carrot.png拖拽到演员视图。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 5-4。 给演员移动画面

太空旅行:宇宙飞船

创建一个新的 actor,双击它打开 Actor 编辑器。

用表 5-3 中的参数编辑演员属性。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

单击 Images 选项卡显示您刚刚导入的图像,并将spaceship.png拖放到 actor 中。

在一个很远很远的星系里:创造背景

创建一个新的 actor,双击它打开 Actor 编辑器。

用表 5-4 中的参数编辑演员属性。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

单击 Images 选项卡显示您刚刚导入的图像,并将background.png拖放到 actor 中。

给你的枪上膛:定义子弹

创建一个新的 actor,双击它打开 Actor 编辑器。

用表 5-5 中的参数编辑演员属性。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

深空中的边界:墙

创建一个新的 actor,双击它打开 Actor 编辑器。

用表 5-6 中的参数编辑演员属性。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

你的演员库存应该匹配图 5-5 。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 5-5。 演员创造的

用游戏属性控制敌人的数量

首先,您将只创建一个属性,用于包含屏幕上剩余的胡萝卜数量。因此,它将是一个整数属性,我们称之为 number 胡萝卜。

在游戏开始时,这个属性将包含屏幕上胡萝卜的数量,并且每当一个胡萝卜被子弹光束打碎时,它将减少 1。

在场景编辑器模式下点击检查器中的属性标签。然后单击+号创建一个新属性,并选择 integer。根据图 5-6 ,初始值应为 0,类型应为整数。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

**图 5-6。**number 胡萝卜属性

设定剧本:实现规则和行为

你需要定义游戏的逻辑,你将使用规则和行为来完成这项任务。您将使用计时器和加速器行为来创建控件和自动触发。

胡萝卜:终极敌人角色

拖放一个改变属性行为到胡萝卜演员和改变游戏。将胡萝卜加入游戏。根据图 5-7 给胡萝卜+1 编号。每在场景中放置一个胡萝卜演员,属性 number 胡萝卜就会增加 1。所以当你开始场景的时候,你会在游戏属性 number rubbers 中包含屏幕上胡萝卜的数量。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 5-7。 改变属性号

现在创建一个规则,当子弹和胡萝卜发生碰撞时,触发敌人数量的减少,然后消灭敌人。

点击创建规则,并将规则命名为“摧毁胡萝卜”添加以下条件:“执行元接收事件”“与“执行元类型”“项目符号”重叠或冲突。”拖放计时器行为,并将设置更改为“0.4 秒后”。选中“运行至完成”复选框然后拖拽一个改变属性行为,改变游戏。将胡萝卜加入游戏。数字胡萝卜-1。最后,根据图 5-8 拖放一个破坏行为。

你为什么用计时器?在本章的后面,你将实现一个持续时间为 0.4 秒的爆炸效果。因此计时器会在消灭演员之前给你时间来展示这个效果。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 5-8。 破坏胡萝卜法则

驾驶宇宙飞船

首先,您将通过使用约束属性行为来确保飞船停留在 Y=25 的水平轴上。

将约束属性行为拖放到飞船角色中,并根据图 5-9 将 spaceship.position.Y 配置为 25。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 5-9。 将飞船约束在 Y=25

接下来,使用与墙壁的碰撞为飞船创建一些边界。

根据图 5-10 ,拖放碰撞行为,并将设置更改为与“类型的演员”“墙”碰撞时反弹。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 5-10 。撞墙

将移动规则组合在一起以增加可读性。您将使用规则来检测加速度计的运动,并使飞船相应地移动。

单击“创建组”并将其命名为“运动”单击创建规则在组内创建规则。将规则命名为“右移”,并将以下条件配置为“任意”:

  • The “actor receiving event”, “key” and “right key” keyboard is “down”
  • “attribute” and “game”. Accelerometer “”> ""0.2 "

然后拖放一个移动行为并配置以下设置:

  • Direction: 0
  • Relative: Scene
  • Type of movement: addition
  • Speed: 300

你的规则应该类似于图 5-11 。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 5-11。 右运动规律

在移动组中创建新规则。将其命名为“向左移动”,并将以下条件配置为“任意”:

  • The “actor receiving event”, “key” and “left key” keyboard is “down”
  • “attribute” and “game”. Accelerometer "

然后拖放移动行为并配置以下设置:

  • Direction: 180
  • Relative: Scene
  • Type of movement: addition
  • Speed: 300

你的规则应该类似于图 5-12 。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 5-12。 左运动规律

现在实现飞船自动发射子弹。为此,创建一个规则,规定只要屏幕上胡萝卜的数量严格大于 0,每 0.5 秒发射一颗子弹。

创建一个新规则,命名为“自动开火”,条件为“属性”“游戏”。number 胡萝卜" " > " " 0 "。然后拖放计时器行为,将设置更改为“每”“0.5”秒,取消选中“运行到完成”。最后,拖放一个 Spawn Actor 行为并将设置更改为:

  • Actor: Bullets.
  • Layer order: in actors
  • Back: 0
  • Relative to: actor
  • Location: X: 0 Y: 0
  • Relative to: actor

自动射击规则将与图 5-13 中的相同。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 5-13。 汽车消防规则

全力开火:子弹

首先,您将更改子弹的速度,以便子弹一产生就移动。

在子弹演员上拖放一个改变速度行为,并配置这些设置(也显示在图 5-14 ):

  • Direction: 90
  • Relative: Scene
  • Speed: 300

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 5-14。 子弹变化速度

下一步是当演员与敌人发生冲突时或者当它在屏幕上不再可见时摧毁它。通过检测它的 Y 轴值就知道子弹是不可见的。

创建一个新规则,并将其命名为“Destroy”将条件配置为以下任何条件:

  • Actor receiving event and actor type carrot
  • Attributes and Bullets overlap or conflict. Location. Y"" > ""560 "

然后根据图 5-15 拖放一个破坏行为。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 5-15??。子弹销毁规则

入侵开始:创建场景布局

下一步是确定演员在现场的位置。试配图 5-16 。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 5-16。 胡萝卜入侵者第一步

添加高级功能

现在是时候给你的游戏增加一些高级功能了。您将学习一些数学知识来创建复杂的运动和运动视觉效果,使用“插值”行为管理能量棒,以及使用“更改场景”行为过渡场景。

复杂的动作

您可以打开文件Carrot_Invaders_step1.gameproj从这一点开始执行步骤。

数学很好玩!我很确定你们中的大多数人不会相信我,但是我可以向你们保证,游戏开发所需的数学知识是非常基础的,它可以让你们做出有趣的游戏!

到现在为止,你一定已经点击了预览按钮,并销毁了胡萝卜。你可以很容易地消灭他们:仍然是毫无防备的目标!但是如果胡萝卜可以移动呢?他们不太容易被杀死。正如你现在已经猜到的,你将使用数学来定义它们的运动。

在你进入 GameSalad 的运动定义之前,我想澄清一下我所说的“复杂运动”是什么意思复杂的运动不是随机的运动。随机运动本质上是混乱的。复杂的运动有一个非常预先确定的模式,但不同于简单的线性运动。

参数方程很有趣

所以,系好安全带,跳进参数方程的世界吧。基本上,参数方程是一种用方程绘制图形的方法,其中 X 和 Y 位置都取决于特定的参数。这意味着图形中的每个点都是一对坐标(X,Y)。此时,你应该说“啊哈!”是的,GameSalad 用 X 和 Y 坐标表示演员的位置。例如,Actor1 在屏幕上的位置是 X=0,Y=0。这是屏幕的左下角。

让我们更进一步。想象一下,你有一个随时间变化的参数,而不是一个固定值(0,0)。我们把这个参数叫做“t”吧,现在你可以用 X=t,Y=t 来定义位置,结果就是你的演员会在右上方向做直线运动。例如,测试参数可以是每秒递增 1 数字,或者可以是时钟。

基本上就是这样。参数方程基于 t 参数定义 X 和 Y。在 GameSalad 中,您将通过约束位置来定义复杂的运动。x 和位置。y 属性归属于基于 t 参数的公式,其中 t 是参与者的时间属性。

下一步是发展你的谷歌搜索技能,找到一个描述你想要实现的复杂运动的参数方程。

**注意:**时间属性是场景中一个演员的每一个实现的内部时钟。计时器将从演员出现在场景中的时刻开始计时,或者如果演员最初出现在屏幕上,则从场景显示的同时开始计时。它对第二位之后的五位数字敏感。它会随着时间不断增加。

让我们把你刚刚学到的东西付诸实践。

使用参数方程创建运动

在谷歌上快速搜索,我得到了以下心形的参数方程:

  • x = sin3t】

4

该方程的图形如图 5-17 所示。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 5-17。 心绘图师

为了画出这个等式,我使用 Grapher 和默认提供的 Mac OS 实用程序。MacRumors.com 主持了一个非常简单但有效的 Mac Grapher 工具指南。在 Chapter5_Files 文件夹中,您将找到该方程的 Grapher 文件。

返回 GameSalad:在演员编辑器中打开胡萝卜演员。点击 Actor 属性窗口左下方的+号,创建两个类型为“real”的 actors 属性,如图图 5-18 所示。将它们命名为“InitX”和“InitY”您将使用这两个属性来存储胡萝卜角色的每个实现的初始位置。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 5-18。 演员属性创建

**注意:**创建 actor 属性时,actor 的每个实现都会在 actor 属性中有自己的值。因此,如果你打算吃胡萝卜,你不必创建 10 个游戏属性。或者,如果您有动态数量的演员(例如,如果他们是衍生的),您可以存储特定于场景中每个演员实现的值。

创建一个新组,命名为“运动”您将使用该组作为定义运动的所有行为的容器。

将一个更改属性行为拖放到组中,然后更改胡萝卜。initxtocarots . position . x。将第二个更改属性行为拖放到组中,然后更改胡萝卜。初始位置现在存储在两个属性中。

**注意:**改变属性行为只发生一次。相反,约束属性实时更新属性值。

将约束属性行为拖放到组中。选择胡萝卜。将. X 定位为属性以约束并打开公式编辑器。设置以下公式(也显示在图 5-19 ):

Carrots.InitX+20*sin(Carrots.Time*100)³

我来解释一下这个公式。你想从初始位置开始移动,所以你把起始点定义为 InitX。然后你在 InitX 周围移动 20sin(胡萝卜。Time100)³.Sin 和 Cos 将只返回-1 和 1 之间的值。你乘以 20 来给出运动的幅度。此外,Sin 和 Cos 将从-1 到 1 变化,t 从 0 到 360、从 361 到 720 以及从-1 到 1 变化。所以要有一个完整的心脏运动,你需要从 0 到 360,这基本上是 6 分钟(每秒 1 度,所以每分钟 60 度,然后 6 分钟 360 度)。因此乘以 100 会加速运动。如果你想改变振幅和速度,你可以使用这些值。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 5-19。 公式编辑器中的 X 公式

将第二个“约束属性”行为拖放到组中。选择胡萝卜。Position.Y 作为属性来约束并打开公式编辑器。设置以下公式(也显示在图 5-20 ):

Carrots.InitY+20*(sin(Carrots.Time*100)⁴-cos(Carrots.Time)) 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 5-20。 公式编辑器中的 Y 公式

点击预览按钮尝试一下。是不是很好玩!

你的动作组应该与图 5-21 中的相匹配。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 5-21。 动作组

因为这都是关于入侵,你需要胡萝卜下去。配置它,使胡萝卜每 10 秒下降 15 个像素。

将计时器拖放到组中。按照图 5-22 每 10 秒改变 InitY 属性。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 5-22。 入侵

给人以宇宙飞船运动的印象

运动是相对的。我这么说是什么意思?嗯,你不需要让宇宙飞船演员移动来给人一种运动的印象。你只需要让其他演员动起来!

为了在游戏中提供更多的动态性,你会在飞船轨迹中添加一些小行星,但是小行星不是移动飞船,而是移动。

按照“艺术家入口:创建演员”一节中描述的步骤,将名为asteroid.jpg的图像文件导入 Chapter5_Files 文件夹。

创建一个新的 actor,双击它打开 Actor 编辑器。

用表 5-7 中的参数编辑演员属性。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

单击 Images 选项卡显示您刚刚导入的图像,并将asteroid.png拖放到 actor 中。

让小行星移动

拖放“改变力度”行为,并将设置更改为:

  • Direction: 270
  • Relative: Scene
  • Speed: Random (100,300)

创建一个新规则,条件为“属性”“小行星”。 位置. Y】"行为名称。通过按下 Command + C 或在按住 Alt 键的同时拖移行为来拷贝行为。您的尺子应该与图 5-23 中的相匹配。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 5-23。 小行星运动规律

回到场景编辑器,按照图 5-24 将两个小行星定位在场景可见区域的正上方。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 5-24。 定位小行星

练习 5.1

实行一个规则,当屏幕上没有更多的胡萝卜时,演员就被消灭了。

练习 5.2

实行一个规则,当小行星与飞船相撞时,游戏重置。

练习 5.3

实现一个规则,当小行星与子弹碰撞时,它从屏幕上消失,并以随机的 X 轴位置从顶部再次回来。

要查看这三个练习的答案,请打开名为Carrot_Invaders_step3.gameproj的文件。

管理能量棒

每个英雄都需要一个能量棒!不,我不是在说巧克力焦糖点心。我指的是你的主要角色的生活吧。在 GameSalad 中有很多方法可以处理这个问题。您可以在规则中使用属性、参与者或它们的任意组合。我不会涵盖所有的可能性;相反,我想向你们展示一种叫做“插值”的新行为,我将通过能量棒来展示它。

插值行为

插值行为是一种非常强大的行为。简单来说,它会用特定的方法计算出给定时间段内从一个起点到一个终点之间的所有数值。想象一下你的演员在 A 点(起点),演员需要去 b 点,如果你对位置应用一个 Change 属性,你的演员会从 A 到 b 做一个量子跳跃,那不是你想要的效果。

如果你已经阅读了前面的章节或者你精通 GameSalad,你会对自己说,“不需要使用插值,只需要使用移动到。”你几乎是正确的!“移动到”是“插值”的线性实现,但是“插值”提供了多一个选项:不是线性的。这适用于任何属性。我再说一遍:任何属性。这给了你很多的可能性在你的游戏中引入一些非常酷的特性。

在本节中,您将对演员的颜色使用“插值”行为。当能量为 100%时,你的能量条是绿色的,但是当能量为 50%时,它会从绿色变成橙色(以及绿色和橙色之间的所有颜色),当能量为 25%时,它会从橙色变成红色。小行星的每一次撞击都会移除 25%的能量条。您还将通过在每次与小行星碰撞后减小能量条的大小来第二次使用“插值”行为。

说够了。让我们现在练习。

在行动中插入

您可以从现有的Carrot_Invaders文件继续,或者打开Carrot_Invaders_step3.gameproj

创建两个 integer 类型的游戏属性,分别命名为“EnergyBar”和“EnergyBarInit”将两者都设置为默认值 100。这些名称隐含了这些属性的用途,但是为什么需要两个呢?您将使用递减,因此您需要一个 buffer 属性来避免递归的无限循环(我将在后面的实现中展示这一点)。

创建一个新的演员,双击它打开演员编辑器。

用表 5-8 中的参数编辑演员属性。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

为了在屏幕上有完美的定位,使用一些更改属性行为来更改演员的位置属性。

**注:**关于演员定位

你会注意到我经常使用改变属性行为来定位角色。它给出了一个完美的结果。它消耗很少的内存,但影响可以忽略不计。您可能希望使用另一种方法,即通过双击场景中的演员实例来更改演员实例的位置属性。

将更改属性行为拖放到执行元和更改能量栏中。位置。X 到 0。拖放第二个更改属性行为,并将 energy bar.position.Y 更改为 20。

将演员定位到 X=0 只会在屏幕上显示演员的一半。这是故意的。当您修改演员的大小时,它将保持其中心位置,但从左侧和右侧减少。通过创建一个两倍于所需大小的演员,并使其只有一半可见,您将创建一个只有一边缩小的视觉效果。或者,您可以在尺寸减小的同时约束位置,但这会消耗更多的资源。

下一步是将能量条的宽度约束到 Energy Bar 属性。这样,能量条 actor 宽度将是 Energy Bar 属性的实时值。如果 EnergyBar 属性通过插值从 100 变为 75,那么您将会看到能量条执行元收缩的视觉效果。

将约束属性拖放到能量条 actor 中,并将能量条. size.width 的设置更改为 game.EnergyBar。

你刚刚实现的行为应该按照图 5-25 进行。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 5-25。 能量条行为

现在让我们创建颜色变化。

从绿色到橙色到红色:管理能量棒的颜色

用以下条件创建一个名为“Orange”的新规则:“attribute”“game”。能量棒" " < " " 75。"然后拖放插值行为,并将设置更改为:

  • Interpolation attribute: energy bar. Color. Red

拖放第二个插值行为,并将设置更改为:

  • Interpolation attribute: energy bar. Color. Green

该规则如图 5-26 所示。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 5-26。 橙色法则

让我们现在做红色预警。在名为“Red”的演员中创建一个新规则,条件如下:“attribute”“game。能量棒" " < " " 50。"然后拖放插值行为,并将设置更改为:

  • Interpolation attribute: energy bar. Color. Green

该规则如图 5-27 所示。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 5-27。 红色法则

更新小行星

双击演员编辑器中的小行星演员,将其打开。在检测与飞船演员碰撞的规则中,通过单击圈起的十字或通过选择并按 Delete 来移除重置游戏行为。拖放插值行为并将设置更改为:

  • Interpolation: Game. Energy bar

  • Duration: 1

  • Function: linearity

这就是使用名为 EnergyBarInit 的缓冲区属性的地方。如果你要写 EnergyBar-25,那么你将进入一个无止境的递归循环。不确定?然后让我们把它放到迭代中,就像这样:

  • 插值 0:能量条= 100,到能量条-25 = 100-25 = 75
  • 插值 1:能量条= 99,到能量条-25=99-25=74
  • And so on, because every time GameSalad interpolates, the target is also moving.

要完成缓冲特技,将一个时间拖放到飞船碰撞规则中,并将设置更改为“1.1”秒后,选中“运行至完成”。然后拖拽一个改变属性到计时器里改变游戏。EnergyBarInit to game.EnergyBar .规则如图图 5-28 所示。最后一个行为将确保插值完成后的新值存储到缓冲区中,以用于下一次碰撞。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 5-28。 碰撞检测

练习 5.4

使用插值、计时器和 Alpha,使能量条在红色区域闪烁。

现场管理

最后但同样重要的是,让我们来看看改变场景行为。这个行为使用起来非常简单,它把你的动作换到另一个场景。该场景可以是顺序中的下一个场景,也可以是您选择的特定场景,例如返回菜单。

基本上,当屏幕上没有胡萝卜时,你想改变场景。这意味着属性号胡萝卜等于 0。游戏中已经有了一个规则,可以检测条件数胡萝卜何时等于 0。

第一步是创建一个新场景。单击主页按钮,然后单击屏幕左下角的+号创建一个新场景。只需在名称区域单击并键入新名称,即可将场景名称更改为“新”。

在演员编辑器中打开小行星演员。将“更改场景”行为拖放到检测属性 number 胡萝卜等于 0 的规则中。根据图 5-29 将“更改场景”设置更改为“转到场景:”新建。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 5-29。 改变场景

总结

你创造了一个经典的射击游戏!你可以自己设计射击游戏,各种关卡,几种敌人类型,大损失。

在本章中,您将:

  • Strengthen your basic skills in project creation, actors, rules and behavior design.
  • Understand the parametric equation.
  • Create a visual effect of movement.
  • Found the interpolation behavior and realized its application to manage the energy bar.
  • Learn how to transition from one scene to another by changing the scene behavior.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值