GameSalad-IOS-游戏开发学习手册-全-

news/2024/9/19 15:38:39/文章来源:https://www.cnblogs.com/apachecn/p/18356855

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 显示了极轻注册表单。

Image

图 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 总结了成员资格的特征。

Image

图 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 开发人员计划并希望升级为公司注册,则属于后一种情况。

Image

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

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

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

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

Image

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

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

Image

Image

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

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

Image

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

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

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

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

Image

图 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 所示。

Image

图 1-6。 验证码页面

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

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

Image

图 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 开发者程序添加到购物车中。

Image

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

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

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

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

Image

图 1-9。 iOS 注册流程

安装 Xcode

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

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

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

Image

图 1-10。【xcode app store page】

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

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

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

Image

图 1-11。 安装 Xcode 图标

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

Image

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

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

Image

图 1-13。Xcode 许可协议

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

Image

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

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

Image

图 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. Image

    图 1-16。服务条款

  3. Drag the GameSalad icon into the Application folder, as per Figure 1-17. Image

    图 1-17。 安装屏幕

  4. Open GameSalad.app in the Application folder and you are ready (see Figure 1-18). Image

    图 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.导航到钥匙串访问Image证书助理Image向证书颁发机构请求证书。

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

Image

图 1-19。 请求证书

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

单击继续按钮。

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

4.前往钥匙串访问Image退出钥匙串访问,关闭钥匙串访问应用。

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

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

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

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

Image

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

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

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

Image

图 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.在您的配置门户中注册您的设备。

转到设备Image添加设备。根据图 1-22 键入名称和设备 ID,并点击提交按钮。

Image

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

若要获取设备 ID,请通过 USB 电缆将 iOS 设备连接到 Mac 电脑,然后打开 Xcode。在 Xcode 中,导航到窗口Image管理器。标识符字段中的 40 个十六进制字符串是您设备的 ID。如果这是您第一次使用您的设备进行开发,请单击本页上的“用于开发”。

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

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

Image

图 1-23。新应用 ID

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

点击供应Image开发Image新建个人资料。您将创建一个新的开发预置描述文件,允许您在 iOS 设备上安装 GameSalad Viewer。

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

Image

图 1-24。 新的配置文件

4.下载预置描述文件。

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

5.安装预置描述文件。

双击下载文件夹中的预置描述文件。这将自动在你的机器上安装它。要确认描述文件的正确安装,请打开 Xcode 并通过导航到窗口Image管理器来启动管理器。在管理器的左侧,选择预配配置文件,并检查您的配置文件是否出现在主窗口的列表中。如果不是这样,请通过双击您的预置描述文件来重复安装。

安装 iOS 浏览器

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

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

1.更改包标识符。

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

Image

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

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

2.更改代码签名。

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

Image

图 1-26。 改码签约

你准备好运行 iOSGameviewer 了吗?

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

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

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

Image

图 1-27。 配菜查看器

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

Image

图 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 中看到的。尽管如此,它是如此具有革命性,以至于公众大量采用了它。

Image

图 2-1。 原 Pong 游戏截图

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

Image

图 2-2。 原 Pong 街机

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

Image

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

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

指定游戏概念和规则

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

游戏概念

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

游戏规则

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

创建新的 GameSalad 项目

你准备好玩乒乓球了吗?

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

Image

图 2-4。GameSalad 应用 logo

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

Image

图 2-5。GameSalad 启动画面

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

Image

图 2-6。 项目信息页面

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

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

Image

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

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

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

现在保存项目的副本。这样你可以经常保存你的进度。点击文件Image另存为,将文件命名为MyFirstPong.gameproj,保存到新建的文件夹中(图 2-8 )。

Image

图 2-8。 拯救游戏

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

关于分辨率独立性:

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

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

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

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

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

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

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

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

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

添加演员

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

什么是演员?

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

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

Image

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

创造演员

创建执行元有两种方式:

  • Through project editing
  • Via scene editing

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

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

Image

图 2-10。 场景图标

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

Image

图 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 所示。

Image

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

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

Image

图 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 所示。

Image

图 2-14。 演员编辑

关于规则行为:

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

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

1.单击新建规则按钮。

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

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

Image

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

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

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

Image

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

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

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

Image

图 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 Image位置Image X,如图图 2-18 所示。

Image

图 2-18。 属性浏览器

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

Image

图 2-19。 约束属性

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

向场景中添加演员

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

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

Image

图 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 。

Image

图 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 所示。

Image

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

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

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

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

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

Image

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

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

Image

图 2-24。 表情编辑

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

Image

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

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

Image

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

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

Image

图 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 。

Image

图 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 的发球规则。

Image

图 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 查看结果。

Image

图 2-30。 场景与墙壁

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

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

标签

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

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

Image

图 2-31。 首页图标

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

Image

图 2-32。 主屏幕

将标签命名为 Collidable。

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

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

Image

图 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 相同的属性。

Image

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

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

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

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

Image

图 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 所示。

Image

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

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

Image

图 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 所示。

Image

图 3-5。 显示文本行为

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

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

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

Image

图 3-6。 P1 配乐演员

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

Image

图 3-7。P2 得分

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

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

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

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

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

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

Image

图 3-8。 破坏球

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

一切都是为了王牌!

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

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

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

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

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

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

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

Image

图 3-9。 将 P1Serving 改为 false

关于布尔:

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

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

Image

图 3-10。 变 P1 为真

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

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

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

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

Image

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

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

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

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

Image

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

对 Rack Player 2 重复该操作。

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

Image

图 3-13。 修改破坏行为

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

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

你有触觉吗?

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

轻轻一碰就端上来的

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

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

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

Image

图 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 。

Image

图 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 所示。

Image

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

移动球员 2 号球拍到存储值

  1. 在 actor 编辑器中打开 Rack Player 2 actor。
  2. 创建新规则并添加以下条件:
    • 属性 game.positionyourself 为真。

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

3.将移动拖到行为。

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

Image

图 3-17。 约束属性

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

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

Image

图 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 进行配置。

Image

图 3-19。 显示按键信息

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

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

让我们在你的设备上玩吧

是时候使用 GameSaladiOS 查看器了。

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

Image

图 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 立即成为一款街机游戏。后来雅达利发布了视频游戏机版《突围》。

Image

图 4-1。 突围楼主

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

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

Image

图 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 配置项目信息。

Image

单击文件Image另存为保存您的项目。命名为BreakaWall.gameproj

定义演员

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

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

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

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

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

Image

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

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

Image

垂直墙

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

水平墙

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

失败地带

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

Image

显示

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

Image

创建可绑定标签

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

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

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

  • brick
  • racket
  • ball
  • Hengqiang
  • Vertical wall

定义属性

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

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

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

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

根据表 4-9 创建属性。

Image

实现规则和行为

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

球类规则和行为

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

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

Image

图 4-3。 球的初速度

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

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

Image

图 4-4。 球的碰撞行为

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

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

Image

图 4-5。 松绑

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

Image

图 4-6。 结束游戏

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

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

Image

图 4-7。 防止横向堵塞

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

Image

图 4-8。 防止垂直堵塞

球拍规则和行为

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

Image

图 4-9。 球的碰撞行为

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

Image

图 4-10。 约束球拍属性

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

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

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

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

Image

图 4-11。 左运动规律

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

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

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

Image

图 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 。

Image

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

砖块规则和行为

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

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

Image

图 4-14。 砖头统治

显示文本规则和行为

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

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

Image

图 4-15。 显示获奖文本

场景布局

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

Image

图 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 。

Image

图 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 。

Image

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

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

用加速度计移动桨

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

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

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

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

Image

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

加速度计

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

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

Image

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

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

Image

图 4-21。 逆时针旋转

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

Image

图 4-22。 顺时针旋转

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

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

Image

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

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

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

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

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

Image

图 4-24。 人像定向规则

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

Image

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

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

演习

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

Image

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

管理生活和游戏结束过程

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

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

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

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

Image

图 4-27。 生命属性

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

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

Image

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

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

Image

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

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

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

Image

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

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

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

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

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

Image

图 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,你的项目中现在有两个场景。

Image

图 3-32。 场景视图

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

Image

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

Image

图 4-33。 暂停显示

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

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

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

Image

图 4-34。 暂停规则

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

Image

图 3-35。 定位暂停演员

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

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

Image

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

Image

图 4-36。 恢复游戏显示

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

  • "Actor receives event" and "Touch" is "pressed"

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

Image

图 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 所示。

Image

图 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 配置项目信息。

Image

将文件命名并保存为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 选择行为选项卡旁边的图像选项卡。

Image

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

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

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

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

Image

图 5-3。 导入图片

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

创造敌人:胡萝卜

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

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

Image

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

Image

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

太空旅行:宇宙飞船

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

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

Image

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

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

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

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

Image

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

给你的枪上膛:定义子弹

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

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

Image

深空中的边界:墙

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

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

Image

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

Image

图 5-5。 演员创造的

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

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

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

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

Image

图 5-6。number 胡萝卜属性

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

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

胡萝卜:终极敌人角色

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

Image

图 5-7。 改变属性号

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

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

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

Image

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

驾驶宇宙飞船

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

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

Image

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

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

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

Image

图 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 。

Image

图 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 。

Image

图 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 中的相同。

Image

图 5-13。 汽车消防规则

全力开火:子弹

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

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

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

Image

图 5-14。 子弹变化速度

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

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

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

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

Image

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

入侵开始:创建场景布局

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

Image

图 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 所示。

Image

图 5-17。 心绘图师

为了画出这个等式,我使用 Grapher 和默认提供的 Mac OS 实用程序。MacRumors.com 主持了一个非常简单但有效的 Mac Grapher 工具指南。在 Chapter5_Files 文件夹中,您将找到该方程的 Grapher 文件。

返回 GameSalad:在演员编辑器中打开胡萝卜演员。点击 Actor 属性窗口左下方的+号,创建两个类型为“real”的 actors 属性,如图图 5-18 所示。将它们命名为“InitX”和“InitY”您将使用这两个属性来存储胡萝卜角色的每个实现的初始位置。

Image

图 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 会加速运动。如果你想改变振幅和速度,你可以使用这些值。

Image

图 5-19。 公式编辑器中的 X 公式

将第二个“约束属性”行为拖放到组中。选择胡萝卜。Position.Y 作为属性来约束并打开公式编辑器。设置以下公式(也显示在图 5-20 ):

Carrots.InitY+20*(sin(Carrots.Time*100)⁴-cos(Carrots.Time)) Image

图 5-20。 公式编辑器中的 Y 公式

点击预览按钮尝试一下。是不是很好玩!

你的动作组应该与图 5-21 中的相匹配。

Image

图 5-21。 动作组

因为这都是关于入侵,你需要胡萝卜下去。配置它,使胡萝卜每 10 秒下降 15 个像素。

将计时器拖放到组中。按照图 5-22 每 10 秒改变 InitY 属性。

Image

图 5-22。 入侵

给人以宇宙飞船运动的印象

运动是相对的。我这么说是什么意思?嗯,你不需要让宇宙飞船演员移动来给人一种运动的印象。你只需要让其他演员动起来!

为了在游戏中提供更多的动态性,你会在飞船轨迹中添加一些小行星,但是小行星不是移动飞船,而是移动。

按照“艺术家入口:创建演员”一节中描述的步骤,将名为asteroid.jpg的图像文件导入 Chapter5_Files 文件夹。

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

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

Image

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

让小行星移动

拖放“改变力度”行为,并将设置更改为:

  • Direction: 270
  • Relative: Scene
  • Speed: Random (100,300)

创建一个新规则,条件为“属性”“小行星”。 位置. Y】"行为名称。通过按下 Command + C 或在按住 Alt 键的同时拖移行为来拷贝行为。您的尺子应该与图 5-23 中的相匹配。

Image

图 5-23。 小行星运动规律

回到场景编辑器,按照图 5-24 将两个小行星定位在场景可见区域的正上方。

Image

图 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 中的参数编辑演员属性。

Image

为了在屏幕上有完美的定位,使用一些更改属性行为来更改演员的位置属性。

注:关于演员定位

你会注意到我经常使用改变属性行为来定位角色。它给出了一个完美的结果。它消耗很少的内存,但影响可以忽略不计。您可能希望使用另一种方法,即通过双击场景中的演员实例来更改演员实例的位置属性。

将更改属性行为拖放到执行元和更改能量栏中。位置。X 到 0。拖放第二个更改属性行为,并将 energy bar.position.Y 更改为 20。

将演员定位到 X=0 只会在屏幕上显示演员的一半。这是故意的。当您修改演员的大小时,它将保持其中心位置,但从左侧和右侧减少。通过创建一个两倍于所需大小的演员,并使其只有一半可见,您将创建一个只有一边缩小的视觉效果。或者,您可以在尺寸减小的同时约束位置,但这会消耗更多的资源。

下一步是将能量条的宽度约束到 Energy Bar 属性。这样,能量条 actor 宽度将是 Energy Bar 属性的实时值。如果 EnergyBar 属性通过插值从 100 变为 75,那么您将会看到能量条执行元收缩的视觉效果。

将约束属性拖放到能量条 actor 中,并将能量条. size.width 的设置更改为 game.EnergyBar。

你刚刚实现的行为应该按照图 5-25 进行。

Image

图 5-25。 能量条行为

现在让我们创建颜色变化。

从绿色到橙色到红色:管理能量棒的颜色

用以下条件创建一个名为“Orange”的新规则:“attribute”“game”。能量棒" " < " " 75。"然后拖放插值行为,并将设置更改为:

  • Interpolation attribute: energy bar. Color. Red

拖放第二个插值行为,并将设置更改为:

  • Interpolation attribute: energy bar. Color. Green

该规则如图 5-26 所示。

Image

图 5-26。 橙色法则

让我们现在做红色预警。在名为“Red”的演员中创建一个新规则,条件如下:“attribute”“game。能量棒" " < " " 50。"然后拖放插值行为,并将设置更改为:

  • Interpolation attribute: energy bar. Color. Green

该规则如图 5-27 所示。

Image

图 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 所示。最后一个行为将确保插值完成后的新值存储到缓冲区中,以用于下一次碰撞。

Image

图 5-28。 碰撞检测

练习 5.4

使用插值、计时器和 Alpha,使能量条在红色区域闪烁。

现场管理

最后但同样重要的是,让我们来看看改变场景行为。这个行为使用起来非常简单,它把你的动作换到另一个场景。该场景可以是顺序中的下一个场景,也可以是您选择的特定场景,例如返回菜单。

基本上,当屏幕上没有胡萝卜时,你想改变场景。这意味着属性号胡萝卜等于 0。游戏中已经有了一个规则,可以检测条件数胡萝卜何时等于 0。

第一步是创建一个新场景。单击主页按钮,然后单击屏幕左下角的+号创建一个新场景。只需在名称区域单击并键入新名称,即可将场景名称更改为“新”。

在演员编辑器中打开小行星演员。将“更改场景”行为拖放到检测属性 number 胡萝卜等于 0 的规则中。根据图 5-29 将“更改场景”设置更改为“转到场景:”新建。

Image

图 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.

六、学习重力、基础物理和相机控制:类似愤怒的小鸟的游戏,第一部分

除非你在荒岛上呆了两年,否则你一定听说过《愤怒的小鸟》。《愤怒的小鸟》是游戏开发者中最成功的故事之一。这种小而简单,但非常容易上瘾的游戏是一种世界性的现象。《愤怒的小鸟》于 2009 年首次在 iOS 上发布,在多个平台上的下载量已超过 3 亿次,每天的游戏时间超过 100 万小时。

在接下来的两章中,我将介绍 GameSalad 中类似游戏的开发。接下来就要靠你用 GameSalad 设计的游戏来寻找下一个愤怒的小鸟的成功了。

如果不熟悉游戏玩法,可以从 App Store 下载免费版的《愤怒的小鸟》。或者,你可以在火狐浏览器或脸书上玩。

如上所述,游戏很简单,但却很有效率。使用弹弓,你把鸟扔向场景另一边的猪。目标是消灭所有的猪。

由于接下来两章的目的是介绍游戏的基本机制,我将不使用任何图像元素。我会坚持游戏中的基本形状。

在本章中,您将学习:

  • Build a complete slingshot system.
  • Simulate an elastic slingshot element in GameSalad.
  • Control the camera.
  • Realize gravity for your game.
  • Use advanced camera settings.
  • Manage a certain number of attempts to destroy the target.

打造弹弓:弹性和回弹力

建造弹弓是你游戏的关键之一。在这样做的时候,你会学到一些新的函数,比如 magnitude 和 vectorToAngle。

解剖弹弓

弹弓是一个 T 形的弹弓,上面有两条松紧带。它是用来用手投掷小弹丸的。图 6-1 是弹弓的图纸。

Image

图 6-1。 画弹弓

你要把弹弓放在地上。射弹将具有有限的运动区域。你越往后拉橡皮筋,你就会把抛射体送得越远,如图图 6-2 所示。

Image

图 6-2 。用弹弓扔弹丸

你无法想象我小时候射过多少个金属罐。我住在一个美丽的农村地区,弹弓比赛在年轻男孩中很常见。我们没有用鸟做投射物,我们也没有向动物射击…但是我们可能有过几次打斗。我还更换了我家附近的几扇玻璃窗。

回忆够多了!现在就来玩一把数码弹弓吧。我将向你展示 GameSalad 中弹弓的基本组件。

创建项目文件

在 GameSalad 中创建新项目,并将文件另存为“CanonShowPartI.gameproj”你称之为“CanonShow”是因为在游戏领域,本章中使用的所有概念都被称为经典物理学。

在项目信息选项卡中,使用表 6-1 中的信息。

建造弹弓框架

弹弓框架将由三部分组成:一只脚和两只手臂。为了简单起见,您将只使用一个简单的白色角色,并更改该角色实例的形状和旋转。您将直接在场景中修改实例。

在场景编辑器中打开新项目的初始场景。在演员编辑器中创建一个新演员,并将其命名为“弹弓组件”不应更改执行元属性。

把演员拖到现场。通过单击场景中的演员来选择实例。演员内部会出现一个带圆圈的框架。单击该帧以更改演员的形状。或者,双击该实例并更改 actor 实例的大小。将形状修改为垂直矩形(宽度:24,高度:100)。根据图 6-3 将演员放置在地面上。

Image

图 6-3。地面上的定位脚

在场景中拖动演员的另一个实例。通过按住 Option 键并点按和拖移实例来复制上一个形状。双击演员的实例,并将旋转属性更改为 330。根据图 6-4 中的将实例放置在脚的顶部。

Image

图 6-4。 定位弹弓的右框架

在场景中拖动演员的第三个实例。通过按住 Option 键并点按和拖移实例来复制上一个形状。双击该演员的实例,并将“旋转”属性更改为 30。根据图 6-5 中的将实例放置在脚的顶部。

Image

图 6-5。 定位弹弓的左框架

你有弹弓的底座。你现在将专注于建立撤回力量。

建立撤回力量

拉回力与你移动石块扔向左侧的距离成正比。你会通过按下触摸来移动方块;当你释放触摸时,它会把方块扔到场景的右边。您将限制您可以拉回挡块的区域,如图图 6-6 所示。

Image

图 6-6。?? 区块的回撤区域

一个圆将定义这个区域。圆的半径将是拉回力的最大值。您将使用一个游戏属性来存储这个最大值;命名为“MaxPower”

在构建这个回调之前,我们先来看看 GameSalad 的两个新功能:magnitude 和 vectorToAngle。

量值函数

magnitude 是一个计算两个演员之间距离的函数,如图图 6-7 所示。函数的语法是 magnitude (Actor1X-Actor2X,Actor1Y-Actor2Y)

Image

图 6-7。 两个演员之间的距离

你将使用 magnitude 来计算从块的原点到块的当前位置的距离,同时拉回。

向量角函数

vectorToAngle 是一个计算与水平线和两个演员之间形成的线的角度的函数,如图图 6-8 所示。
功能的语法是:

vectorToAngle(Actor1X-Actor2X,Actor1Y-Actor2Y)

Image

图 6-8。 vectorToAngle 函数

使用弹弓的大小和矢量角度

图 6-9 显示了如何使用 magnitude 和 vectorToAngle 函数。

Image

图 6-9。 使用幅度和矢量角度功能

用你的手指,你会碰到抛射体,把它拉回来。当触摸被释放时,您将使用方向的变化速度(取决于 vectorToAngle 值)和速度(取决于幅度)。

当触摸被按下时使用鼠标位置,你将约束投射物的位置。但是你不希望抛射体在图 6-6 中的圆圈之外。

制造抛射体

在场景编辑器中,创建一个新的演员,并将其命名为“弹丸”根据表 6-2 更改演员的属性。

这个小红演员会被弹弓扔出去。

存储初始位置

为了存储抛射体的初始位置,您将使用两个游戏属性。使用游戏属性而不是演员属性的原因是因为你将需要从其他演员(随后的投射物)访问这个初始位置。

返回场景编辑器,创建两个名为“InitialProjectileX”和“InitialProjectileY”的真实游戏属性

使用“更改属性”行为将抛射体的初始位置存储在刚刚创建的两个属性中。在演员编辑器中打开弹丸演员;拖放一个改变属性行为和改变游戏。InitialProjectileX 到弹丸。位置 X 如图图 6-10 所示。

Image

图 6-10。 改变 InitialProjectX 的属性

将第二个更改属性行为(或复制前一个行为)拖放到抛射体角色并更改游戏。InitialProjectileY 到 propellet . position . y

余弦和正弦

接下来,创建一个规则来检测投射体上的触摸。您将使用鼠标设备位置来约束投射体的位置。但是你想把这个位置限制在一个圆内。使用余弦和正弦函数,如图图 6-11 所示。

Image

图 6-11。 余弦和正弦

余弦和正弦是三角函数,这意味着它们是一个角度的函数,连接直角三角形的角和这个三角形的边。在直角三角形中,角度(α)的余弦由下式定义

余弦(α)=(α角的邻边)/(直角的对边-斜边)

角度的正弦(α)由下式定义

正弦(α)=(角的对边α)/(直角的对边——斜边)

由于您想要将投射体约束在由属性 MaxPower 定义的圆内,因此您为 c 使用的值将是 MaxPower 和 A 与 b 之间的距离的最小值。这样,c 能够采用的最大值是 MaxPower。

让我们实现这一切。

轻轻一碰就移动射弹

打开场景编辑器,创建一个名为“MaxPower”的整数游戏属性将默认值设置为 75。

创建一个名为“触摸”的新规则条件将是“演员接收事件”“触摸”被“按下”这将检测到演员被触摸。

将约束属性拖放到规则和 changeProjectile 中。位置。X 到游戏。InitialProjectX + min(游戏。MaxPower,量级(游戏。鼠标.位置. X - game。InitialProjectX,游戏。游戏。initial projecty)* cos(vectorToAngle(游戏。鼠标.位置. X - game。InitialProjectX,游戏。游戏。InitialProjectY))。

回到图 6-11 ,

  • X2 is a projectile.

  • X1 是游戏初始项目 x

  • 阿尔法!阿尔法切矢量路径(阿叔。□维琪。云娥。x 游戏。InitialProjectX,阿叔。阿叔。

将约束属性拖放到规则中,然后更改投射体。位置。Y 到游戏。initial project+min(游戏。MaxPower,量级(游戏。鼠标.位置. X - game。InitialProjectX,游戏。游戏。initial project)* sin(vectorToAngle(游戏。鼠标.位置. X - game。InitialProjectX,游戏。游戏。InitialProjectY))。

回到图 6-11 ,

  • Y2 is a projectile.

  • Y1 是游戏 100 .初始项目

  • c 是 min(吴亚玲)。MaxPower,majdú(唐氏)。□维琪。x 游戏。初稿,曰。阿叔!(初始项目)

  • It's alpha vectorToAngle (game. Mouse. location. X-game. InitialProjectX, game. Game. Initial project

该规则如图 6-12 所示。

Image

图 6-12。 触摸法则

返回场景编辑器。在场景中拖放抛射体,并将其放置在弹弓的两个臂之间。

点击预览按钮,玩弹丸。

投掷投射物

下一步是当你将手指从屏幕上移开时,能够投掷抛射体。功率将根据原点和拉回点之间的距离来定义,方向将从 vectorToAngle 开始。

一旦释放触摸,您将使用“改变速度”行为来设定抛射体的方向和速度。

凭直觉,您可能会想到使用一个新规则,条件是“Actor receive event”“touch”是“released”当你保持在圆圈限制内时,这种方法是可以的,但如果你走出圆圈并释放触摸,它就不起作用了。相反,您将使用一个带有属性和现有接触规则的小技巧。创建一个默认为假的布尔执行元属性。然后,一旦触摸被按下,将属性更改为 True。在接触规则中,在其他部分添加一个子规则。子规则条件是属性为真。这将避免在按下 Touch 之前抛射体被抛出的可能性。

在演员编辑器中打开弹丸演员。创建一个布尔执行元属性,并将其命名为“HasBeenTouched”

在接触规则中,在“约束属性”行为上方添加“更改属性”行为。如图 6-13 所示,Change 已经触摸到 true。

Image

图 6-13。 改变已触摸属性

然后在“行为”窗口的顶部添加一个“更改属性”行为,以便在启动场景时将 HasBeenTouched 属性重置为 false。准备发射。已被修改为 false。

然后展开规则的 Otherwise 部分,并在该部分添加一个新规则。将此子规则命名为“投掷”条件是“属性”抛射体。“HasBeenTouched”是“真的”然后将“改变速度”行为拖放到投掷规则中。将此行为的设置更改为

  • -你好:180 +矢量路径(阿苏阿苏阿苏阿苏阿苏阿苏阿苏阿苏阿苏阿苏阿苏阿苏阿苏阿苏阿苏阿苏阿苏阿苏阿苏阿苏阿苏阿苏阿苏阿苏阿苏阿苏阿苏阿苏。云娥 x-游戏初始 x 阿金。位置。y-gaminiitialiy)
  • Relative to: Scene
  • 九月:10 *我的天(阿苏阿苏阿苏阿苏阿苏阿苏阿苏阿苏阿苏阿苏阿苏阿苏阿苏阿苏阿苏阿苏阿苏阿苏阿苏阿苏阿苏阿苏阿苏阿苏阿苏阿苏阿苏阿苏。云娥 x-游戏初始 x 阿金。位置。y-gaminiitialiy)

该规则如图 6-14 所示。

Image

图 6-14。 投掷法则

方向已设置为 180 + vectorToAngle(),因为 vectorToAngle 提供了从原点到拉回位置的方向。你想把抛射体往反方向扔,所以这就是你用“180 +”的原因。

对于速度,使用倍增器来增加效果。我建议使用 10 个,但是你可以使用不同的值。

点击预览按钮来测试您的规则。

如何在 GameSalad 中模拟橡皮筋

在 GameSalad 中模拟橡皮筋是基于修改作为橡皮筋图形表示的 actor 的大小。

您将在场景中看到同一个弹性演员的两个实例。它们中的每一个都会连接到弹弓的不同臂上。每个实例的行为会有所不同;因此,您将编辑场景中的实例。此外,您将需要访问场景实例的一些属性。

更改实例执行元名称

为了创建弹弓,您使用了一个名为“弹弓组件”的演员为了易于识别实例,您将更改场景中实例的名称。

打开场景编辑器,双击弹弓的脚。这将在 Actor 编辑器中打开实例,如图图 6-15 所示。

Image

图 6-15。 演员编辑弹弓之脚

在实例的属性中,将名称修改为“弹弓组件脚”

对弹弓的右臂重复相同的操作,并将其命名为“弹弓组件右”为弹弓的左臂再做一次,并将其命名为“左弹弓组件”

您执行此重命名操作是因为您需要从场景中的 elastic 实例访问这些实例的一些属性。

获取弹丸的实时位置

为了正确定位弹力带,你将需要访问抛射体的实时位置。使用游戏属性和约束属性行为很容易做到这一点。但是你只有在项目被抢的时候才需要这些信息。一旦抛射体被抛出,你不希望你的松紧带跟着它。验证规则时,您将使用抛射体的触摸规则来约束位置;否则你会把松紧带带回原来的位置。

创建两个名为“ProjectileX”和“ProjectileY”的真实游戏属性

在演员编辑器中打开投射演员。将约束属性拖放到触摸规则和 changegame 中。ProjectileX 到 propeline . position . x .将另一个约束属性行为拖放到触摸规则中,改变游戏。ProjectileY to Projectile.Position.Y. These .这两种行为如图图 6-16 所示。

Image

图 6-16。 约束抛射体的位置

这将确保在抓取投射物时,鸟的位置包含在两个游戏属性 ProjectileX 和 ProjectileY 中。

接下来,当鸟没有被抓住时(触摸规则的 Otherwise 部分),将 ProjectileX 和 ProjectileY 属性的值更改为投射体的初始位置,该位置包含在 InitialProjectileX 和 InitialProjectileY 中。

展开触摸规则的“否则”部分,并将“更改属性”行为拖放到该部分中。改变游戏。ProjectileX 到 game.InitialProjectileX .拖拽另一个改变属性行为,改变游戏。这两个额外的行为显示在图 6-17 中。

Image

图 6-17。 回到初始位置

现在您已经设置了属性 ProjectileX 和 ProjectileY。让我们花点时间在松紧带上。

弹性理论

弹性元件将是一个非常小尺寸(5×5)的基本元件,它将根据抛射体的位置改变其形状(宽度)、位置和旋转。图 6-18 说明了弹性物体如何与抛射体相互作用。

Image

图 6-18。 弹丸、弹弓和弹弓臂

对于松紧带,您将把它的宽度约束到投射体和弹弓右臂之间的距离,给人一种长度在移动投射体时发生变化(弹性)的印象。位置 X3 是通过将 X2(抛射体)和 X1(臂)之间的距离的一半加到 X2 而得到的。Y3 也一样,是把 Y2 和 Y1 的距离的一半加到 Y2 上得到的。

为了最终确定效果,您将约束弹弓的旋转,使弹弓和弹弓臂之间的角度相同。在图 6-18 中可以看到,这两个角度是相等的。

以上我们都来做。

创造弹性演员

在场景编辑器中,创建一个名为“弹性”的新演员根据表 6-3 更改该演员的属性。

拖动弹性演员,将其放在场景中大约右臂的中心位置。重复相同的动作,但是将第二个实例放在左臂的中心附近,如图图 6-19 所示。

Image

图 6-19。 现场弹性定位

现在让我们配置每个实例。

实现正确的弹性

双击场景中的右弹性实例,在演员编辑器中打开它。将实例角色重命名为“弹性右”点击图 6-20 中的锁图标。这将解锁实例行为。

Image

图 6-20。 解锁演员的实例

拖放约束属性行为并更改弹性右移。位置。X 到游戏。ProjectileX +(当前场景。图层。背景。弹弓组件右。位置 X-游戏。ProjectileX)/2。

拖放约束属性行为并更改弹性右移。位置。Y 到游戏。ProjectileY +(当前场景。图层。背景。弹弓组件右。位置。Y-游戏。ProjectileY)/2。

拖放约束属性行为并更改弹性右移。大小。宽度到数量级(当前场景。图层。背景。弹弓组件右。位置 X-游戏。ProjectileX,当前场景。图层。背景。弹弓组件右。位置。Y-游戏。ProjectileY)。

拖放一个约束属性行为并改变弹性权。旋转到 vectorToAngle(游戏。当前场景。图层。背景。弹弓组件右。位置。X,游戏。投影-当前场景。图层。背景。弹弓组件右。Position.Y)。

这些行为如图 6-21 所示。

Image

图 6-21。 弹性正确行为

让我们对左边的松紧带做同样的处理。

实现左弹性

双击场景中左侧的弹性实例,在演员编辑器中将其打开。将实例角色重命名为“弹性左”点按锁图标。

拖放一个约束属性行为,并更改弹性左。位置。Xto 游戏。ProjectileX +(当前场景。图层。背景。弹弓组件左。位置 X-游戏。ProjectileX)/2。

拖放一个约束属性行为并向左更改弹性。位置。Y 到游戏。ProjectileY +(当前场景。图层。背景。弹弓组件左。位置。Y-游戏。ProjectileY)/2。

拖放一个约束属性行为,并更改弹性左。大小。宽度到数量级(当前场景。图层。背景。弹弓组件左。位置 X-游戏。ProjectileX,当前场景。图层。背景。弹弓组件左。位置。Y-游戏。ProjectileY)。

拖放一个约束属性行为,并更改弹性左。旋转到 vectorToAngle(游戏。当前场景。图层。背景。弹弓组件左。位置。X,游戏。投影-当前场景。图层。背景。弹弓组件左。Position.Y)。

这些行为如图 6-22 所示。

Image

图 6-22。 弹性左行为

点击预览按钮来玩抛射体。

您可以打开位于 Chapter6_Files 文件夹中的文件CanonShowPartI-step1.gameproj

控制摄像机:在场景中滚动

接下来,你将了解 GameSalad 中的相机。GameSalad 中的摄像头不是控制 iPhone 摄像头的一种方式(GameSalad 还无法实现这一点,但这将是一个非常酷的功能)。理解摄像机最简单的方法就是认为你是通过摄像机在看比赛。然后,您可以使用滚动功能来增强佳能秀中的玩家体验!

屏幕与场景

在 GameSalad,只有一个摄像头。摄像机是视点,你看比赛的方式。游戏的可视区域在你的屏幕上,你将实现对相机的控制:向左、向右、向上和向下移动相机。

到目前为止,您已经制作了场景大小等于屏幕大小的项目。当您正在构建一个不需要滚动的项目时,这很好。然而,在这个游戏中,你希望有一个更大的场景,其中可见的部分等于屏幕的大小。

GameSalad 中相机的一个关键概念是一个演员在控制相机。您将使用名为“控制摄影机”的行为,并将其影响到一个演员。因此,当演员移动时,摄像机也跟着移动。

相机视图是屏幕,但是相机还有另外一个工具:相机区域。这个区域是控制摄像机的关键。只要演员在这个区域内移动,摄像机就不会移动;演员一走出这个区域,摄像机就会跟着走。

点击图 6-23 中所示的摄像头图标,进入摄像头区域。

Image

图 6-23。 相机图标

这将激活相机模式并显示相机区域(参见图 6-24 )。

Image

图 6-24。 摄像机区域视野

控制摄像机的演员在撞上摄像机区域并随着演员移动摄像机之前,可以在中央黑色区域自由移动。

您可以使用手柄来减小或增大该区域。您也可以使用场景摄像机跟踪区域来编辑带有精确数字的值。

但是如果你的场景和你的屏幕一样大,那么移动相机又有什么意义呢?没有!为了使用相机,你需要有一个更大的场景。

实现滚动

让我们实现佳能秀的滚动。第一步是让场景的尺寸变大。

在场景编辑器中,点击场景选项卡,打开场景属性,如图图 6-25 所示。

Image

图 6-25。 场景属性

展开尺寸属性,将场景尺寸改为宽度:1920,高度:1280,如图图 6-26 所示。

Image

图 6-26。 场景大小

现在让我们给抛射体添加相机控制。

在演员编辑器中打开投射演员。将一个控制摄像机行为拖放到抛射体演员中,如图图 6-27 所示。

Image

图 6-27。 控制摄像机

点击预览按钮来玩抛射体。

您可以打开位于 Chapter6_Files 文件夹中的文件CanonShowPartI-step2.gameproj

飞行和坠落:重力概念

你现在有一个投射物被抛出,但它只是上升,并且很快离开场景。你需要实现一种脚踏实地的方法,这样你就可以努力达到你以后要创造的目标。同样,当一个物体在空中飞行时,空气会引起一些摩擦力,从而降低速度,所以你需要定义这一点。

从前,有一个苹果

重力是一种自然现象,物理物体通过重力吸引与其质量成比例的力。17 世纪,艾萨克·牛顿爵士提出了万有引力的概念。它用 g 表示,是地球给予其表面或表面附近物体的加速度。这就是为什么你坚持在地面上。在图 6-28 中可以看到,以米/秒计约为 9.8m/s 2

Image

图 6-28。 引力的例证

关于苹果:

第一个苹果标志实际上是艾萨克·牛顿爵士坐在苹果树下,一个苹果落在他头上的形象。据说苹果这个名字是为了向牛顿爵士致敬。

飞行和拖曳

我个人不使用 GameSalad 重力功能。它位于场景属性中。您可以在 X 和 Y 上输入一个实数来模拟 X 和 Y 方向上的力。

因为重力是加速度,所以我更喜欢使用加速行为。它提供了更多的灵活性,因为您可以通过规则触发它。想象一下有几个行星的太空场景,每个行星都有自己的引力…

实现 gravity 并将其拖动到您的项目中。阻力用于模拟空气对物体的摩擦。拖是演员的属性。

在演员编辑器中打开投射演员。展开接触规则的“否则”部分。然后,将加速行为拖放到投掷规则中。将设置更改为:

  • Direction: 270
  • Relative: Scene
  • Acceleration: 200

这将模拟重力。

然后,将“更改属性”行为拖放到“加速”行为旁边。换弹丸。物理。拖到 100。图 6-29 显示了这两种行为。这种阻力将模拟空气摩擦。

Image

图 6-29。 加速和拖拽

最后一步是放置一个背景,使投射物的运动更容易可视化。导入图像Background.png并创建一个名为“Background”的新演员拖动场景中的演员,右键单击演员将其发送到后面,然后调整背景大小以覆盖整个场景。

点击预览按钮来玩抛射体。

您可以打开位于 Chapter6_Files 文件夹中的文件CanonShowPartI-step3.gameproj

更多相机控制:飞行时放大/缩小

当你看动作片的时候,电影制作人常用的一个技巧就是放大或缩小来强调一个场景。当你的弹丸飞行时,能在 GameSalad 中做同样的事情不是很好吗?想象一下,你可以在飞行开始时缩小,然后在接近着陆时缩小。这肯定会产生非常好的视觉效果。

开始吧!

缩小

对于相机,有一组属性我还没有提到:相机尺寸。如前所述,摄像机的显示器是屏幕。所以你改变了摄像机的尺寸。很明显,你的物理屏幕是不会扩大的(苹果很神奇,但没那么神奇)。那么如果你增加屏幕的尺寸会发生什么呢?在相同的显示屏尺寸下,您可以覆盖更多内容。这将产生一种视觉效果,好像摄像机正在进一步(缩小)以在显示器上显示更多内容。这正是你想要的效果。

相机属性是场景属性。如果您希望行为修改它们,您需要能够访问场景属性。什么类型的演员可以访问场景属性?解锁的 actor 实例!

打开场景编辑器。双击场景中投射演员的实例。根据图 6-30 点击锁图标解锁实例。

Image

图 6-30。 解锁弹丸实例

展开 Touchrule 的“否则”部分。然后扩展投掷规则。将插值行为拖放到投掷规则中,如图 6-31 所示,将设置更改为:

  • Interpolation attribute: current scene. camera . size . width

Image

图 6-31。 插补摄像机的宽度尺寸

你可以调整宽度和持续时间的值。我用 920 是因为我喜欢 2 秒钟内数值翻倍的效果。我建议你四处寻找你喜欢的价值观。

将插值行为拖放到投掷规则中,并将设置更改为:

  • Interpolation attribute: current scene. camera . size . height

点击预览按钮,尝试这个新的效果。

放大

直观地说,你可以说,如果你缩小相机的尺寸,你会创造一个放大的效果。你完全正确!

为了在缩小后触发效果,添加一个 2 秒的计时器。在下一章中,您将更改时间以添加一个规则,该规则将在与目标接触时触发放大。

将一个计时器行为拖放到抛射体 actor 实例的投掷规则中,并将设置更改为“2”秒后。

将这两个插值行为(拖移+Option 键)复制到计时器中。将刚刚复制的插值行为设置为宽度:460 和高度:320,如图图 6-32 所示。

Image

图 6-32。 放大效果

你现在有很好的缩小和放大效果,但是用一个很小的技巧,你可以让它变得更好。

微调

要微调效果,有个小技巧。缩小跟踪区域会产生更好的效果。

打开场景编辑器并单击“场景”选项卡以显示场景属性。展开相机属性,然后展开跟踪区域属性。将宽度属性改为 200,高度属性改为 150,如图图 6-33 所示。

Image

图 6-33。 缩小跟踪区域

点击预览按钮来玩抛射体。

您可以打开位于 Chapter6_Files 文件夹中的文件CanonShowPartI-step4.gameproj

射弹管理:管理尝试

本章的最后一步是实现每个场景的最大尝试次数。你会在屏幕的左下方出现一些弹丸,每扔出一个弹丸,数量就会减少一个。

添加边界

在进入投射物管理之前,你需要在游戏区域周围定义一些墙。正如你可能已经注意到的,当你投掷抛射体时,它们会落下并进入场景之下,因为没有底层。您将在场景周围创建一些墙。抛射体将与墙壁碰撞。

打开场景编辑器,创建一个名为“墙”的新演员双击演员,在演员编辑器中打开它。在演员的属性中,将恢复值更改为 0,并取消选中可移动框。

回到场景编辑器。将墙壁角色的四个实例拖放到场景中。改变它们各自的形状,将它们放置在场景的四个边界上,如图图 6-34 所示。

Image

图 6-34。 给场景添加墙壁

接下来,双击场景中的投射角色实例。请记住,因为您已经编辑了此实例(解锁),所以它不会合并对原型所做的更改。将一个碰撞行为拖放到行为的顶部,并将设置更改为与“类型的演员”“墙”碰撞时反弹,如图图 6-35 所示。

Image

图 6-35。 在墙壁上跳跃

点击预览来测试你的工作。

制造假射弹

管理各种射弹的一个非常酷的技巧是,实际上你只会使用一个射弹。您将创建假射弹,每次尝试后,当主射弹被带回弹弓时,假射弹将一个接一个地消失。

假射弹将具有与射弹相同的外观。但是它们将只包含一个规则和这个规则中的一个改变属性行为。

创建一个游戏属性来定义完成场景的剩余尝试次数。我将这个尝试次数设置为 4(你可以选择任何其他适合你的次数),所以你将需要三个假射弹。因为你在弹弓上有一个,它最初会在场景中显示四个投射物。每次尝试后,游戏属性将减少一。虚拟抛射体中的规则将检查游戏属性与位置号的比较。如果游戏属性较低,你将使虚拟射弹不可见(颜色从 alpha 到 0)。魔法结束了!

在场景编辑器中,创建一个新的整数类型的游戏属性,命名为“尝试离开”,并设置其默认值为 4,如图图 6-36 所示。

Image

图 6-36。 游戏属性尝试离开

接下来,创建一个新的演员,并将其重命名为“虚拟弹丸”,并在演员编辑器中更改以下属性:

  • Size/width: 25
  • Size/Height: 25
  • Color/red: 1
  • Color/green: 0
  • Color/blue: 0

接下来,用条件“属性”“游戏”创建一个新规则。图 6-37 。

Image

图 6-37。 假射弹

拖放虚拟抛射体演员的三个实例,并将它们放置在场景的左下方,如图图 6-38 所示。

Image

图 6-38。 定位假射弹

从左侧开始,打开假射弹的第一个实例并解锁。将规则的条件改为“属性”“游戏”。图 6-39 。

Image

图 6-39。 修改假射弹一枚

从左侧开始,打开伪射弹的第二个实例并解锁。将规则的条件改为“属性”“游戏”。如图 6-40 中所示<【3】【调遣】。

Image

图 6-40。 改装假射弹两枚

修改抛射体实例

下一部分工作是修改弹丸实例。你需要在投射体停止移动时实现一个检测,这将触发投射体返回到它的初始位置。您还将重置关键属性,减少尝试次数,并在四次尝试完成后实现游戏重置。当你改变抛射体时,你也将使用一个布尔属性来设置一个状态。该布尔值将被用作规则中触发某些重置的条件。

检测射弹何时停止移动

在场景编辑器中,创建一个名为“改变抛射体”的新布尔游戏属性要检测抛射体何时停止移动,您将使用线速度运动属性。

通过双击场景中的演员来打开投射演员实例。在投掷规则中创建一个新规则,并将其命名为“更改抛射体”将以下条件添加到标准为“全部”的规则中

  • [Attribute] "Projectile. Exercise. Linear speed.

  • "Attribute" "projectile. Exercise. Linear speed.

然后,将一个更改属性行为拖放到规则和更改抛射体中。颜色α为 0。接下来,将一个更改属性行为拖放到相同的规则中,并更改游戏。将弹丸改为真。最后,将最后一个更改属性行为拖放到规则和更改游戏中。尝试离开游戏。尝试离开-1。该规则如图 6-41 中的所示。

Image

图 6-41。 改变抛射体规则

移回原始位置

当属性改变投射物为真时,你将通过一个规则把投射物移回到它的原始位置。使用“插值”行为将其移回其原始位置,该位置存储在属性 InitialProjectileX 和 InitialProjectileY 中。

在 actor 实例中创建一个新规则,并将其命名为“Back to Position”规则的条件是“游戏属性”。改变弹丸" "为" "真。"将插值行为拖放到规则中,并将设置更改为:

  • Attribute: projectile. Location. x

  • Duration: 1

  • Function: linearity

使用以下设置重复相同的操作:

  • Attribute: projectile. position . Y

  • Duration: 1

  • Function: linearity

回位规则如图图 6-42 所示。

Image

图 6-42。 回位规则

重置关键属性

接下来,您需要重置 HasBeenTouched 属性,使弹丸可见,并将 change 弹丸的状态更改为 false。

将“更改属性”行为拖放到“回到位置”规则和“更改抛射体”中。已被修改为 false。

将新规则拖放到“回到位置”规则中,将其命名为“属性重置”,并将以下条件添加到“全部”

  • 【属性】"弹丸位置。X" "= " "游戏 InitialProjectileX "
  • [Attributes] [Projectile]. Position.Y" "= ""game.

这将检测射弹是否回到其原始位置。

将更改属性行为拖放到属性重置规则和更改投射体中。颜色从α到 1。拖放第二个改变属性和改变游戏。将弹丸改为假的。属性重置规则如图 6-43 所示。

Image

图 6-43。 属性重置规则

尝试四次后重置游戏

这最后一步非常简单。只需在抛射体 actor 实例中创建一个新规则,并将其命名为“重置游戏”规则的条件是“游戏属性”。尝试离开" " =" "0。"然后将重置游戏行为拖放到规则中。游戏规则的重新设置如图 6-44 所示。

Image

图 6-44。 重置游戏规则

点击预览按钮来玩投射弹。

您可以打开位于 Chapter6_Files 文件夹中的文件CanonShowPartI-step5.gameproj

总结

准备好向目标扔东西了吗?有了你全新的弹弓,你将能够提高你的瞄准技巧。

在本章中,您学习了如何:

  • Build a slingshot system.
  • Simulate an elastic element.
  • Control the camera.
  • Realize gravity.
  • Use advanced camera settings.
  • Manage a limited number of attempts.

七、创建游戏菜单和粒子效果:类似愤怒的小鸟的游戏,第二部分

在前一章中,你学习了如何为一个类似愤怒的小鸟的游戏建立基础。但是你还有很多要学的。你需要一个目标来瞄准,需要格挡来保护目标。这也是一个引入表的机会,表执行一些非常高级的优化。最后但同样重要的是,您将构建一个非常酷的菜单系统。

在本章中,您将:

  • Build goals and blocks.
  • Use particle effect properties.
  • 云娥加米沙拉-什么。
  • Optimize your game with tables.
  • Create a cool menu system.

瞄准目标:摧毁街区

如果没有目标和保护目标的方块,佳能游戏会是什么样子?在本节中,您将通过创建三类要销毁的方块来增加游戏体验,并且您将创建玩游戏所需的交互。

创建积木:硬积木、软积木和目标积木

您将创建三种类型的块:硬块、软块和目标块。目标就是目的。弹丸一击,关卡完成。软块将模拟易于破坏的块;需要双击来摧毁这些方块。最后,坚硬的石块将模拟岩石般坚硬的石块;需要三次打击才能摧毁这些街区。

目标

在场景编辑器中打开场景,并创建一个新演员。将演员命名为“目标”根据表 7-1 更改属性。

Image

软块

创建一个新的演员,并命名为“软块。”根据表 7-2 更改属性。

硬块

创建一个新的演员,并命名为“硬块。”根据表 7-3 更改属性。

Image

使它们碰撞

您将使用一个标签来更容易地定义可碰撞的对象。

单击主页按钮,然后单击演员选项卡。为所有可碰撞的物体创建一个新的标签。单击标签窗格上的+号,并将新标签重命名为“Collidable”然后将以下参与者拖放到可绑定的标签中:

  • shot
  • target
  • Soft block
  • Hard block
  • wall

结果如图图 7-1 所示。

Image

图 7-1。 可绑定标签的演员

在执行元编辑器中打开目标执行元。拖放一个碰撞行为,并将设置更改为与“带标签的演员”“可碰撞”碰撞时反弹,如图图 7-2 所示。

Image

图 7-2。 碰撞行为

对演员软块和硬块重复同样的操作。

把它们放在地球上:重力

当你通过加速实现重力时,你需要定义一个加速行为。

在执行元编辑器中打开目标执行元。拖放加速行为并将设置更改为:

  • Direction: 270
  • Relative: Scene
  • Acceleration: 200

参见图 7-3 。“相对于”适用于方向。如果您选择场景,它将与场景的参考进行比较。相对于场景的 90°方向将向上。如果选择了 actor,它将是相对于 actor 的。因此,如果您选择 90,并且演员的旋转等于 90,效果将是在场景中向左移动(90 + 90)。

Image

图 7-3。 重力为目标

对演员软块和硬块重复同样的操作。

让演员进入场景

将一个目标实例、一个软块实例和两个硬块实例拖放到场景中。确定演员的位置和形状,使其大致符合图 7-4 。试着把它们放在场景的右边。

Image

图 7-4。 在场景上定位目标

点击预览按钮来玩投射弹。

您可以打开位于 Chapter7_Files 文件夹中的文件CanonShowPartII-step1.gameproj

在这个阶段,你仍然有更多的工作要做,以使它更具可玩性。接下来,您将重点确保在一定数量的点击后,一些块被破坏。

带点风格:粒子效果

粒子效果是 GameSalad 的一大特色。基本上,它将在指定的时间内以定义的速率产生多个元素(粒子)。它可以有许多不同的用途。它可以根据设置提供多种结果:灰尘、推力、爆炸。本节解释了粒子效果的每个设置参数,然后你将实现它对目标的破坏。

粒子效果的参数

粒子效果是一种叫做粒子的行为。可以在标准行为库中找到,需要拖放到一个 actor 中。虽然效果很棒,但是有一个缺点就是你不是在催生演员。这意味着粒子不具有相同的属性。比如不能碰撞,不能有行为。

粒子行为由六个参数标签组成:

  • Reproduction speed: Define the number, life span and reproduction speed of particles.
  • Velocity/Position: Define the velocity of particles and the position where they should be generated.
  • Size: Defines the size of the particle.
  • Color: Allow some color effects on particles.
  • Rotation: Add some setting options for the rotation of particles.
  • Image: This section allows you to select an image from your particle library instead of a basic shape.
产卵率

图 7-5 显示了粒子行为的“繁殖速率”选项卡。

Image

图 7-5 。粒子行为的“繁殖速率”选项卡

在该选项卡中,有三个设置参数:

  • Number of particles: the number of particles generated when this input behavior occurs. Be careful; Setting a high number of particles here may slow down the game.
  • Particle startup time: enter the time required to generate all the particles you just defined. Unit 2.
  • Particle life: Here you can define the life of a particle before it is destroyed. Unit 2.
速度/位置

速度/位置选项卡如图 7-6 所示。

Image

图 7-6。 粒子行为的速度/位置选项卡

在这里你可以定义你产生的粒子的速度和方向以及它们的来源。该选项卡包含六个设置参数:

  • Emitter Offset X: This parameter offsets the position of the particle origin on the X axis relative to the center of the actor with particle behavior.
  • Y emitter offset: This parameter offsets the position of the particle origin on the Y axis relative to the center of the actor with particle behavior.
  • Direction: Defines the direction of the derived particles.
  • Relative: You can choose whether you want the direction to be relative to the actor or the scene. For example, if you choose a direction of 270 degrees relative to the scene, it will always go down regardless of the position of the actor. If you choose 270 degrees as the direction relative to the actor, it will go to the bottom of the actor, which will depend on the rotation of the actor.
  • Affected by gravity: If you have defined the scene gravity, check this box if you want your particles to be affected by gravity.
  • Velocity: Enter a value to define the velocity of particles.
大小

粒子行为的尺寸选项卡如图 7-7 所示。

Image

图 7-7。 粒子行为的尺寸选项卡

“大小”选项卡定义粒子的大小、起始大小以及在指定时间内达到的目标大小。这些参数是:

  • Size: Enter a value here. Units are pixels.

如果您选择了“尺寸更改为”,尺寸转换设置将出现在屏幕上。设置参数为:

  • Target size: enter the size to be reached within the specified time set in the following parameters.
  • Duration: Enter the time to change the size. Unit 2.
颜色

图 7-8 显示了粒子行为的颜色选项卡。

Image

图 7-8。 粒子行为的颜色标签

“颜色”选项卡不仅定义粒子的颜色,还使您能够在指定的时间内获得起始颜色和目标颜色。

这些参数是:

  • Color: Choose a color here.
  • Constant color: Choose whether you want the color of particles to remain constant throughout the life cycle, or whether you want the color to change.

如果您选择了“颜色更改为”,颜色过渡设置将出现在屏幕上。设置参数为:

  • Mixed mode: You can choose from a variety of mixed modes. Try to find the setting that suits you best.
  • Target color: select the color to be set within the specified time (set in the following parameters).
  • Duration: Enter the time to change the color. Unit 2.
循环

旋转选项卡如图 7-9 所示。

Image

图 7-9。 旋转选项卡

您可以定义初始旋转角度以及角速度(粒子的旋转速度)。

图像

图 7-10 显示了图像选项卡。

Image

图 7-10。 粒子行为的图像选项卡

您可以通过从下拉按钮中选择图像来使用图像库中的图像,而不是基本的正方形。以前的设置继续适用。

色彩的爆炸

在玩一点粒子行为之前,你需要在游戏中遵循一些额外的步骤。

在 actor 编辑器中打开软块,创建一个名为“NbHit”的新整数 Actor 属性,默认值为 0。每次与抛射体碰撞,该属性都会增加 1。

创建名为“碰撞增量”的新规则规则的条件是“执行元接收事件”与“执行元类型”的“投射体”发生“重叠或冲突”然后将更改属性行为拖放到规则和更改软块中。NbHit 到软块。NbHit+1。

接下来,创建第二个名为“块销毁”的规则这个规则会在投射物击中两次后摧毁行动者。规则的条件是“属性”“软块”。NbHit""≥""2。"然后将销毁行为拖放到规则中。

软块的 Actor 编辑器视图如图图 7-11 所示。

Image

图 7-11。 演员编辑查看软屏蔽

对硬块角色重复同样的操作,但不是需要两次命中来摧毁角色,而是在三次命中后将其设置为摧毁。演员如图图 7-12 所示。

Image

图 7-12。 演员编辑视角的硬屏蔽

现在,让我们玩一下粒子行为。

将名为star.png的 Chapter7_Files 文件夹中的图像导入到项目的图像库中。

在执行元编辑器中打开目标执行元。创建一个新规则,并将其命名为“目标破坏”规则的条件是“执行元接收事件”与“执行元类型”的“投射体”重叠或冲突拖放粒子行为并将设置更改为:

  • Number of particles: 200
  • Particle starting time: 1
  • Particle life: 1
  • Transmitter offset: 0&0
  • Direction: Random (0,359)
  • Relative to: actor
  • Speed: 100
  • Size: 20
  • Change the size to:
    • Target size: 0
  • Duration: 1
  • Color: Select a blue color and set the opacity to 50%.
  • Change the color to:
    • Mixed: ordinary

拖放另一个粒子行为,并将设置更改为(或通过按住 Option 键拖移它来复制之前的行为)

  • Number of particles: 200
  • Particle starting time: 1
  • Particle life: 1
  • Transmitter offset: 0&0
  • Direction: Random (0,359)
  • Relative to: actor
  • Speed: 100
  • Size: 20
  • Change the size to:
    • Target size: 0
  • Duration: 1
  • Color: Choose a green color and set the opacity to 50%.
  • Change the color to:
    • Mixed: normal
  • Target color

拖放另一个粒子行为并将设置更改为:

  • Number of particles: 200
  • Particle starting time: 1
  • Particle life: 1
  • Transmitter offset: 0&0
  • Direction: Random (0,359)
  • Relative to: actor
  • Speed: 100
  • Size: 20
  • Change the size to:
    • Target size: 0
  • Duration: 1
  • Color: Choose a red color and set the opacity to 50%.
  • Change the color to:
    • Mixed: normal
  • Target color

拖放另一个粒子行为,并将设置更改为:

  • Number of particles: 200
  • Particle starting time: 1
  • Particle life: 1
  • Transmitter offset: 0&0
  • Direction: Random (0,359)
  • Relative to: actor
  • Speed: 100
  • Size: 20
  • Change the size to:
    • Target size: 0
  • Duration: 1
  • Color: Choose a green color and set the opacity to 50%.
  • Change the color to:
    • Mixed: normal

点击预览按钮来玩抛射体。

您可以打开位于 Chapter7_Files 文件夹中的文件CanonShowPartII-step2.gameproj

使用表格进行性能优化

GameSalad 的 0.9.90 版本引入了表格。表是二维数组,允许您存储不同类型的数据。在写这本书的时候,表只是处于只读模式,但在 GameSalad 路线图中,从游戏逻辑上使它们可写。

GameSalad 中的表格介绍

可以在 Actors 选项卡旁边的 tables 选项卡上看到这些表,如图图 7-13 所示。

Image

图 7-13。 表格选项卡视图

要创建一个新表,只需点击屏幕左下方的+号。您可以通过单击表名来重命名表名。表格将显示为游戏属性,您将使用特定的功能来访问表格的内容。也可以从 Excel 或任何其他导出 CSV 格式的软件中导入表格。

您可以通过双击表格在表格编辑器中打开表格。表格编辑器如图 7-14 所示。

Image

图 7-14。 表格编辑

您也可以在表格编辑器中修改表格的名称。您可以通过修改表名旁边的参数来添加行和列。

您将按列选择表中包含的数据类型。这意味着每一列都是特定类型的数据。通常,您可以选择文本、整数、布尔、实数和角度。您也可以命名您的列和行,如图 7-15 所示。

Image

图 7-15。 一张简单的桌子

表格编辑器的另一个非常有用的特性是能够导入和导出 CSV 文件。如果您有大文件的数据,您可以立即从 CSV 文件导入它们。

最后但同样重要的是,让我们快速回顾一下用于表格的函数。图 7-16 显示了访问表格信息的三个函数。

Image

图 7-16。 表功能

让我们检查每个函数的语法和结果。

tableCellValue()返回指定表格中指定单元格的值。语法是:

tableCellValue(表格,行,列)

  • Table: The name of the table. You need to use the property browser to select the table.
  • Line: line number
  • Column: column number

tableColCount()返回指定表格中的列数。语法是:

tablecolcount 表

  • Table: The name of the table. You need to use the property browser to select the table.

tableRowCount()返回指定表格中的行数。语法是:

tableRowCount 表

  • Table: The name of the table. You need to use the property browser to select the table.

让我们练习一下桌子的用法。

在一个场景中管理多个场景

让我们来了解一下表格的高级用途。您将对演员进行一些回收,并使用表格来存储游戏的不同级别。

创建表格

您将为要回收的每个参与者创建一个表。基本上,您将拥有硬块 1、硬块 2、软块和目标的表格。表格将包含每个级别的块的位置。您将拥有两列(X 和 Y)和三行(三个级别)。如果要创建更多的级别,就需要创建更多的行。

转到“表”选项卡并创建一个新表。将该表重命名为“Hard Block1”双击表格编辑器中的表格将其打开。根据图 7-17 在该表中键入数值。

Image

图 7-17。 硬块 1 表

通过创建另一个名为“Hard Block2”的表重复操作,并添加图 7-18 所示的值。

Image

图 7-18。 硬块 2 表

通过创建另一个名为“软块”的表格重复操作,并插入图 7-19 中显示的值。

Image

图 7-19。??【软挡台】??

再次重复操作,添加另一个名为“Target”的表,并添加图 7-20 中的值。

Image

图 7-20。 目标表

现在,您已经设置好了所有的桌子。您将相应地修改您的演员。

实现回收

回收的目的很简单。您放置一个块,当需要销毁该块时,不使用销毁行为,而是将演员移出可见场景。当你进入下一关时,你将再次把方块的位置改回到下一关应该在的地方。这样你就可以用一个场景拥有数百个关卡,这在内存上是非常高效的。

你将使用一个游戏属性来存储当前级别。在场景编辑器中打开场景,并创建一个名为“WhatLevel”的新整数游戏属性默认值为 1。

在 actor 编辑器中打开场景最右侧的 Hard Block actor 实例,如图图 7-21 所示。

Image

图 7-21。 最右边硬挡选中

解锁执行元的实例。将实例重命名为“Hard Block1”

将“更改属性”行为拖放到实例中,并更改 Hard Block1。Position.X 到 tableCellValue(游戏。硬块 1,游戏。WhatLevel,1)。将另一个更改属性行为拖放到实例中,并更改 Hard Block1。Position.Y 到 tableCellValue(游戏。硬块 1,游戏。WhatLevel,2)。这两种行为如图图 7-22 所示。

Image

图 7-22。 硬块 1 的初始定位

打开 Hard Block actor 的第二个实例,并将其重命名为“Hard Block2”

将更改属性行为拖放到实例中,并更改硬块 2。Position.X 到 tableCellValue(游戏。硬块 2,游戏。WhatLevel,1)。将另一个“更改属性”行为拖放到实例中,并更改 Hard Block2。Position.Y 到 tableCellValue(游戏。硬块 2,游戏。WhatLevel,2)。这两种行为如图图 7-23 所示。

Image

图 7-23。 硬块的初始定位 2

打开软块执行元的实例。

将更改属性行为拖放到实例和更改软块中。Position.X 到 tableCellValue(游戏。软挡,游戏。WhatLevel,1)。将另一个“更改属性”行为拖放到实例和“更改软块”中。Position.Y 到 tableCellValue(游戏。软挡,游戏。WhatLevel,2)。这两种行为如图图 7-24 所示。

Image

图 7-24。 软垫块的初始定位

打开目标角色的实例。

将更改属性行为拖放到实例和更改目标中。Position.X 到 tableCellValue(游戏。目标,游戏。WhatLevel,1)。将另一个更改属性行为拖放到实例和更改目标中。Position.Y 到 tableCellValue(游戏。目标,游戏。WhatLevel,2)。这两种行为如图图 7-25 所示。

Image

图 7-25。 目标的初始定位

重新打开 Hard Block1 实例。在块销毁规则中,通过点按行为右侧的圆形十字来移除销毁行为。

将更改属性行为拖放到规则中,并更改硬块 1。位置 X 到 640。将更改属性行为拖放到规则中,并更改硬块 1。位置 Y 到 1500。更新后的块破坏规则如图 7-26 所示。

Image

图 7-26。 更新了区块破坏规则

对硬块 2(如图图 7-27 所示)和软块(如图图 7-28 所示)进行类似的修改。

Image

图 7-27。 更新了硬块 2 的块销毁规则

Image

图 7-28。 更新了软格挡的格挡破坏规则

接下来,打开目标参与者的实例。将计时器行为拖放到最后一个粒子行为下方的目标破坏规则中。选中“运行至完成”后,将计时器行为的设置更改为“0.5 秒后”。

将更改属性行为拖放到计时器和更改目标中。位置 X 到 1400。将更改属性行为拖放到计时器和更改目标中。位置 Y 到 1300。更新后的目标摧毁规则如图 7-29 所示。

Image

图 7-29。 更新了目标摧毁规则

你在这里使用一个计时器,因为你想看到粒子效果。

知道目标何时被摧毁

为了知道目标何时被摧毁,你需要另一个游戏属性。创建一个名为“TargetDestroyed”的新布尔游戏属性

在刚刚创建的计时器中添加一个新的改变属性行为,然后改变游戏。目标销毁为真,如图图 7-30 所示。

Image

图 7-30。 TargetDestroyed 设置为真

你现在会知道目标何时被摧毁;这表明是时候移动到下一个级别,并根据下一个级别坐标重新定位场景中的演员了。就这么办吧。

仍然在目标执行元的实例中,创建一个名为“Level Up”的新规则,它将满足以下两个条件:

  • [All]
  • [Attributes] [Games]. Target Destruction is [real]
  • [Attributes] [Games].

变弹丸”为“真”

添加改变抛射体的条件为真,以便当抛射体回到弹弓时重置场景。

拖放一个改变属性行为和改变游戏。什么水平地游戏。什么水平+1。这将提升级别。

接下来,您将重新定位目标。但在此之前,你需要确保目标没有动量运动。这将是来自前一个场景的运动。因为您将在其他块中重复使用它,所以我将向您展示如何创建自定义行为。

创建自定行为

基本上,为了确保目标不移动,您将所有速度(线性和角度)以及旋转角度重置为 0。

在升级规则中,创建一个名为“无移动”的新组使用更改属性行为来设置以下内容(如图 7-31 所示):

  • Self. Exercise. Linear speed.

  • Self. Exercise. Linear speed.

  • Self. Motion. Angular velocity is 0

  • Self.

Image

图 7-31。 没动静

现在,点按“行为”资源库中的“自定”标签。将不动组拖到行为库中,如图图 7-32 所示。

Image

图 7-32。 没有运动习惯的行为

就这样!您已经创建了第一个自定义行为。稍后您将使用此行为。

在新的层面上定位目标

在向上级别规则中,拖放更改属性行为和更改目标。Position.X 到 tableCellValue(游戏。目标,游戏。WhatLevel,1)。

拖放另一个更改属性行为和更改目标。Position.Y 到 tableCellValue(游戏。目标,游戏。WhatLevel,2)。

更新后的等级提升规则如图图 7-33 所示。

Image

图 7-33。 更新了升一级规则

对目标实例的最后一个修改:你需要在每个游戏开始时重置 TargetDestroyed 属性。

将更改属性行为拖放到目标实例中,然后更改游戏。目标销毁为假,如图图 7-34 所示。

Image

图 7-34。 重置目标摧毁属性

更换积木

让我们修改硬块和软块,使它们在目标被摧毁后重新定位。

在 Actor 编辑器中打开实例 Hard Block1。创建一个新规则,并将其重命名为“Level Up”该规则的触发器是两个属性 TargetDestroyed 和 Change 设置为 true。因此,将条件修改为:

  • [All]
  • [Attributes] [Games]. Target Destruction is [real]
  • [Attributes] [Games].

变弹丸”为“真”

然后,拖放一个计时器,将设置更改为“1”秒后,并选中“运行至完成”。在重新定位块之前使用计时器,以确保抛射体有足够的时间飞出场景。如果你不等待,碰撞可能会发生,可能会弄糟你的游戏。

现在将无移动自定义行为拖放到计时器中。

将两个更改属性拖放到计时器中,然后更改:

  • 硬块 1。位置。X 到表格单元格值(游戏。硬块 1,游戏.【WhatLevel,1)
  • Hard block 1. Position.Y to tableCellValue (game. Hard block 1, game. 2)

您还需要重置该块的命中次数。拖放更改属性行为并更改硬块 1。NbHit 到 0。

硬块 1 的调平规则如图图 7-35 所示。

Image

图 7-35。 硬块升级规则 1

在 Actor 编辑器中打开 Hard Block2。创建一个名为“升级”的新规则将条件区域修改为:

  • [All]
  • [Attributes] [Games]. Target Destruction is [real]
  • [Attributes] [Games].

变弹丸”为“真”

然后,拖放一个计时器,将设置更改为“1”秒后,并选中“运行至完成”。现在将无移动自定义行为拖放到计时器中。将两个更改属性拖放到计时器中,然后更改:

  • 硬块 2。位置。X 到表格单元格值(游戏。硬块 2,游戏.【WhatLevel,1)
  • Hard block 2. Position.Y to tableCellValue (game. Hard block 2, game. 2)

拖放更改属性行为并更改硬块 2。NbHit 到 0。

对软块实例重复相同的步骤。创建一个名为“升级”的新规则将条件区域修改为:

  • [All]
  • [attribute] [game]. TargetDestroyed is [true]
  • [Attributes] [Games]. Change the projectile "is" true "

然后,拖放一个计时器,将设置更改为“1”秒后,并选中“运行至完成”。现在,将“无移动”自定义行为拖放到计时器中。将两个更改属性拖放到计时器中,然后更改

  • 软挡位置。X 到表格单元格值(游戏。软挡,游戏.【WhatLevel,1)
  • Soft block. Position.Y to tableCellValue (game. Soft block, game. 2)

拖放更改属性行为并更改硬块 2。NbHit 到 0。

最后的步骤是处理射弹。

修改射弹开始一个新的水平

你将使用重新定位射弹的末端来完成重置你的参数。

在演员编辑器中打开弹丸实例。展开位于“回到位置”规则中的属性重置规则。

将更改属性行为拖放到属性重置规则和更改游戏中。TargetDestroyed 为 false。

在“回到位置”规则中,创建一个您将放置在顶部位置的新规则。条件是“属性”“目标已销毁”为“真”然后在这个规则中拖拽一个“改变属性”的行为,改变游戏。尝试离开到 4。这将在您更改等级时将尝试次数重置回 4 次。

你需要做的最后一个修改是延迟重新定位,因为把投射物放回它的原始位置会重置属性。你需要有必要的时间来重新放置所有的积木。

将计时器行为拖放到“回到位置”规则中,并将设置更改为“0.2 秒后”,同时选中“运行至完成”。接下来,将规则和两个行为拖放到计时器中,如图图 7-36 所示。

Image

图 7-36。 重置一级后剩余的尝试次数

此外,您需要替换“回到位置”规则中的插值行为,因为它们可能会在回到弹弓位置时触发与块的不必要碰撞。您将改为使用更改属性行为。

从“回到位置”规则中移除两种插值行为。拖放两个更改属性行为,并将设置更改如下(如图图 7-37 ):

  • Bullet. Location. X to the game.

  • Bullet. Location. Y to the game. InitialProjectileY

最后,你需要修改假射弹。当尝试次数重置后,它会重新出现。

打开每个虚拟射弹实例,并展开现有规则的 Otherwise 部分。在“其他”部分拖放一个“更改属性”行为,然后更改虚拟射弹。颜色从α到 1。这将使诡计奏效。

点击预览按钮来玩抛射体。

您可以打开文件夹 Chapter7_Files 中的文件CanonShowPartII-step3.gameproj

添加酷菜单

在本章的最后一节,你将创建一个非常酷的滑动菜单。您将把它限制为三个级别,每个级别显示在一个页面上。但是您可以在一个页面上有更多的级别,并且可以有任意多的页面。此外,只有第一个级别将被解锁,您需要赢得该级别才能解锁以下级别。

创建菜单场景

创建一个名为“菜单”的新场景,并将其放置在初始场景之前,如图图 7-37 所示。

Image

图 7-37。 菜单场景

双击菜单场景打开场景编辑器。

由于您正在进行一个 iPhone 风景项目,屏幕尺寸为 480 × 320。因为你想要三页菜单,你需要把宽度改为 1440。

显示场景属性并将宽度更改为 1440,如图图 7-38 所示。

Image

图 7-38。 菜单场景属性

管理解锁级别

为了管理级别,您将使用一个整数游戏属性,该属性将包含解锁的最高级别。默认情况下,它将从一点开始。然后在游戏过程中,每升一级都会检查新的 WhatLevel 属性是否高于 MaxLevel。如果是这种情况,您将使用 WhatLevel 的值替换 MaxLevel 的值。

在菜单场景中,您将使用一个 actor 来显示盒子的级别编号,或者如果级别尚未解锁,则显示一个红色叉号。长方体的级别编号将是一个演员属性,对于场景中的每个实例都有不同的值。

让我们做这一切!

创建一个名为“MaxLevel”的新整数游戏属性默认值为 1。在场景编辑器中打开初始场景。打开目标实例,并在向上级别规则中找到 WhatLevel 的增量。就在这个增量下面,用条件“属性”“游戏”创建一个新规则。WhatLevel" ">" "game.LevelMax . "然后将一个更改属性行为拖放到规则中,并更改游戏。MaxLevel 到游戏。WhatLevel,如图图 7-39 所示。

Image

图 7-39。 MaxLevel 更新

接下来,创建一个名为“BoxLevel”的新演员双击该角色,在角色编辑器中打开它。创建名为“Level”的整数类型的 actor 属性

创建一个条件为“属性”的新规则。Level" "≤" "game.MaxLevel . "拖放一个显示文本行为,选择 BoxLevel。级别作为要显示的属性。将大小更改为 60。

展开规则的“否则”部分,然后拖放“显示文本”行为。键入要显示的大写字母 X。将尺寸改为 60,颜色改为红色。

该规则如图 7-40 所示。

Image

图 7-40。 为关卡框显示什么内容

根据图 7-41 ,在菜单场景上放置三个 BoxLevel actor 实例。

Image

图 7-41。 定位盒子

打开场景中演员的每个实例,从左到右将级别属性从 1 更改为 3。

接下来,您将实现滑动效果。

实现滑动效果

要实现滑动效果,你需要两个演员。基本上,第一个将记录手指移动,第二个将根据从第一个演员收集的数据控制摄像机。

感动演员

Touch actor 将用于记录手指运动。它将在场景中不可见。

创建一个名为“触摸”的演员。将 Touch actor 的一个实例拖放到场景中,双击该实例在 actor 编辑器中打开它。单击锁图标以解锁实例。

创建一个新规则,条件为“执行元接收事件”“鼠标按钮”为“按下”这将检测到手指已经位于屏幕上。与上一章相反,你不用触摸来检测手指触摸。你确实使用了鼠标按键检测,因为这给了你检测屏幕上任何地方的触摸的可能性,而与演员的位置无关。

然后将更改属性行为拖放到规则中,并更改触摸。Position.X 到 Device.Mouse.Position.X,然后将约束属性行为拖放到规则中,并更改 Touch。运动。线速度。x 对 10*(游戏。鼠标。position . x–触摸。位置. X)。这两个行为将确保只要手指在屏幕上就没有惯性。它随着手指移动。

最后,将约束属性行为拖放到规则中,并更改触摸。运动。线速度。要触摸的 x。运动。线速度。X0.95。这最后一个行为会产生一个惯性,它会随着 95%的减少而自行减速(0.95)。

该规则如图 7-42 所示。

Image

图 7-42。 触摸法则

最后一个重要的修改是,这个 actor 应该位于不可滚动的层上。在场景编辑器中,单击“场景”选项卡以显示场景属性检查器。点击图层选项卡,如图图 7-43 所示。

Image

图 7-43。 层层督察

通过点按图层检查器中的+号创建一个新图层。默认情况下,它将创建一个名为“层 1”的新层取消选中“可滚动”下面的框

展开背景图层,在图层检查器中向下移动到触摸演员到图层 1,如图图 7-44 所示。

Image

图 7-44。第一层中的

*最后,在 actor 编辑器中打开 Touch actor 实例,取消选中 Visible 框。

摄像机控制演员

我们来研究一下 CameraControl 演员。

创建一个名为“CameraControl”的新演员将其颜色变为鲜绿色。该演员将是不可见的,但在定位该演员时会很有帮助。

将 CameraControl 的一个实例拖放到场景中。尽量把演员定位在场景的中心,把演员重塑的尽量小,如图图 7-45 所示。

Image

图 7-45 。将摄像机控制器定位在场景上

点击相机图标,设置相机区域。在 CameraControl actor 上将摄像机区域缩小到一个很小的区域,如图图 7-46 所示。

Image

图 7-46。 修改过的摄像区

回到场景编辑器。双击 CameraControl actor 的实例。单击锁图标以解锁实例。

将控制摄像机行为拖放到执行元中。

接下来,拖放约束属性行为并更改 CameraControl。运动。线速度。x 到当前场景。层次。第一层。触摸。运动。线速度。x,如图图 7-47 所示。

Image

图 7-47。 移动摄像机

您在来自 Touch 的速度值前面放了一个负号,因为您希望相机向手指的相反方向移动。如果你从右向左移动手指,你想看到屏幕右边(相反方向)是什么。

现在你将为左右两边添加边界。x 轴值的最小值为 240,最大值为(1440-240)。拖放两个约束属性行为并更改:

  • Camera control. Position x to maximum (240, camera control.

  • Camera control. Position x to minimum (1200, camera control.

如图 7-48 中的所示。

Image

图 7-48。 摄像头控制行为

最后但同样重要的是,取消选中 visible 属性,它位于这个 actor 的 actor 属性中。

启用级别选择

你现在需要一种方法来点击一个盒子来玩一个解锁的关卡。你将使用一个非常简单的技巧。当您触摸滑动时,触摸和释放的位置将不会相同。但是,如果您打算单击一个框,触摸和释放位置将是相同的。

创建两个名为“TouchedX”和“ReleasedX”的 real 类型的游戏属性您将使用这些属性来存储触摸和释放的值。

接下来,在 actor 编辑器中打开 BoxLevel actor 原型。

创建一个新规则,条件为“执行元接收事件”“触摸”为“按下”然后在规则和改变游戏中拖放一个改变属性行为。TouchX 至设备。Mouse.Position.X,如图图 7-49 所示。

Image

图 7-49。 记录触摸 X 值

创建一个新规则,条件为“执行元接收事件”“接触”为“已释放”然后在规则和改变游戏中拖放一个改变属性行为。释放到设备。Mouse.Position.X,如图图 7-50 所示。

Image

图 7-50。 登记释放 X 值

接下来,创建一个规则,检查何时释放触摸,x 位置是否相同,以及关卡是否解锁。

创建一个符合以下条件的新规则:

  • [All]
  • [actor receiving event] [touch] is [release]
  • [Attributes] [Games]. Release ""= ""game. TouchX "

然后将一个改变属性行为拖放到规则和改变游戏中。最后,根据图 7-51 ,拖拽一个改变场景行为,将设置改为“转到场景:”初始场景。

Image

图 7-51。 启动关卡

让我们通过在初始场景中添加一个菜单按钮来结束这个项目。

在初始场景上添加一个菜单按钮

在场景编辑器中打开初始场景。

创建一个名为“Menu”的新演员将颜色\Alpha 更改为 0。

在执行元编辑器中,将显示文本行为添加到菜单执行元中,并键入“Menu”作为要显示的文本。

接下来,创建一个新规则,条件是“执行元接收事件”“触摸”是“按下的”最后,将更改场景行为拖放到规则中,并选择菜单场景。

演员行为如图图 7-52 所示。

Image

图 7-52。 菜单演员行为

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

点击预览按钮来玩你的菜单。

您可以打开位于 Chapter7_Files 文件夹中的文件CanonShowPartII-step4.gameproj

总结

哇哦!你刚刚走了多长的路啊!你建立游戏的整个游戏机制,比如愤怒的小鸟。在本章中,您将:

  • Blocks and targets were created.
  • Found the particle behavior.
  • A table used in games.
  • The recovery of actors is realized.
  • Optimize your performance with tables.
  • Created a very powerful and advanced menu.*

八、图形和声音效果:迷宫

当我还是个孩子的时候,电子游戏在家庭中并不常见。那时候,我们还有别的游戏。是的,我们有非视频游戏。迷宫中的球谜题非常受欢迎;它们在每个药店都有不同的尺寸、形状和颜色(图 8-1 )。

Image

图 8-1。 迷宫球图片来自维基百科

这些游戏可以追溯到 19 世纪。为什么我在一本关于电子游戏的书里谈论非电子游戏?嗯,因为在这一章中你将把一个复古游戏变成一个复古视频游戏。你将用 GameSalad 实现一个迷宫游戏。

在 GameSalad 中实现一个迷宫游戏是相当容易的,并且给你无限数量的游戏去设计。在前面的章节中,你学习了一些严肃的游戏逻辑,你将利用这些知识打下迷宫游戏的基础。您将再次实现加速度计运动以及计时器行为。

然后我将向你展示如何使用 GameSalad 中的一些技巧实现一些很酷的灯光特效。最后,我将介绍声音导入以及如何使用声音行为来创建空间声音效果。

创建迷宫游戏项目

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

根据表 8-1 配置项目信息。

Image

单击文件Image另存为保存您的项目。命名为Labyrinth.gameproj

为迷宫游戏创造演员

在这个游戏中,你将使用以下角色:

  • ball
  • background
  • wall
  • Gate
  • open the door
  • Shengli cave
  • Failure hole

球是游戏的主角,从某种意义上说,它是由玩家控制的主角。因为是球,你会把碰撞形状改成圆形,这样会提供更真实的碰撞效果。

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

Image

导入位于 chapter_08 文件夹中名为ball.png的图像。将ball.png拖放到演员中。

背景

背景演员只是用来显示游戏中的背景图像。

创建一个新的 actor 并双击它以打开 Actor 编辑器。用表 8-3 中的参数编辑演员属性。

Image

导入位于 chapter_08 文件夹中的wood background.png图像。将它拖放到演员中。

墙壁

墙角色用于定义球的可碰撞边界。将恢复值更改为 0 以避免反弹是很重要的。此外,墙壁的位置是固定的,因此您将取消选中可移动属性。

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

Image

通过

门演员用来给游戏增加一点复杂性。它阻止进入获胜区域。玩家必须执行一些步骤来打开门并进入获胜区域。

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

Image

快开门

开门演员被用作打开胜利洞入口的开关按钮。

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

Image

Image

胜利洞

胜利洞演员充当球的目标。作为球员,你的目标是把球打进洞里。演员要比球稍微大一点,视觉效果好。

创建一个新的 actor 并双击它以打开 Actor 编辑器。用表 8-7 中的参数编辑演员属性。

Image

丢失的洞

为了让游戏更难一点,你会使用一些陷阱:让你输的洞。这些是丢失的洞。

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

Image

用规则和行为定义游戏逻辑

现在是时候定义游戏逻辑了。你将会重复使用前面章节中提到的规则和行为。这是回顾定时器行为和加速度计使用的绝佳机会。

球类规则和行为

为了移动球,你将像在第四章中一样使用加速度计。你将实现四个方向。请记住,如果你要发布这个游戏,你需要实现自动旋转,以保持有效的运动。

在演员编辑器中打开球演员。创建一个新组,命名为“加速度计。”

创建一个新规则,并将其命名为“up”规则的条件是“属性”“设备”。加速度计。X""

  • Direction: 270
  • Relative: actor
  • Acceleration: max(100, min( 1400, abs). Accelerometer. X * 1000)

该规则如图 8-2 所示。

Image

图 8-2。 向上加速计规则

该公式将确保您获得模拟加速度。它与加速度计轴的值相关联,所以你移动得越强,它就走得越快。

重复上述步骤三次以上。

按住 option 键并向下拖动现有规则,复制您刚刚创建的规则。把它命名为“对”规则的条件是“属性”“设备”。加速度计。Y"">""0.1。"然后拖放加速行为,并将设置更改为:

  • Direction: 180
  • Relative: actor
  • Acceleration: max(100, min( 1400, abs). Accelerometer. Y * 1000)

该规则如图 8-3 所示。

Image

图 8-3。 右加速计规则

创建一个新规则,并将其命名为“down”规则的条件是“属性”“设备”。加速度计。X"">""0.1 "。然后拖放加速行为,并将设置更改为:

  • Direction: 90
  • Relative: actor
  • Acceleration: max(100, min( 1400, abs). Accelerometer. X*1000)

该规则如图 8-4 中的所示。

Image

图 8-4。 向下加速计规则

创建一个新规则,并将其命名为“left”规则的条件是“属性”“设备”。加速度计。Y""

  • Direction: 0
  • Relative: actor
  • Acceleration: max(100, min(1400, abs (device). Accelerometer. Y*1000)

该规则如图 8-5 所示。

Image

图 8-5。 左侧加速度计规则

提示:如果你想设计一个即将发布的游戏,不要忘记处理屏幕旋转,如第四章中所解释的。

接下来,你需要确保球从墙壁和门演员那里反弹回来。拖放碰撞行为,并将设置更改为与“演员类型”“墙”碰撞时反弹通过拖放第二个碰撞行为重复该操作,但根据图 8-6 更改设置使其与“类型的演员”“门”碰撞。

Image

图 8-6。 球的碰撞规则

背景规则和行为

背景包含几个更改属性行为,它们将用于将演员完美地定位在屏幕的中心。

在演员编辑器中打开背景演员。创建一个新组,命名为“定位背景”在群组中拖放更改属性行为并更改背景。位置 X 到 240。使用附加的更改属性行为和更改背景重复该操作。位置 Y 到 160。该组如图 8-7 所示。

Image

图 8-7。 定位背景

开门规则和行为

你需要打开阻挡通往获胜洞的门。玩家必须将球移动到一个按钮上,该按钮将触发门的打开。该按钮用作开/关按钮。这意味着如果球碰到按钮,它就会打开门。如果球再碰到按钮,就会关门,这样循环下去。

在开门演员里,你会察觉到和球演员的碰撞。这将触发布尔游戏属性的变化。根据前面属性的值,门将从一个位置移动到另一个位置。但是,为了在球再次击中按钮之前有时间将球从按钮上移开,您需要添加一个 2 秒的计时器。如果你不使用这个计时器,让球一直在按钮上移动,它会一直从真到假快速改变状态,以至于你甚至不会用眼睛注意到它。

创建一个布尔类型的新游戏属性,并将其命名为“开门”在演员编辑器中打开开门演员。创建一个 Boolean 类型的新 actor 属性,并将其命名为“Timer”

创建一个新规则,并将其命名为“更改为假”将“全部”应用于以下情况:

  • [Attributes] [Games]. "Open the door" is "true"
  • Actor receiving event and actor type ball
  • "Properties" "Open the door". Timer ""=" "0 "

然后拖拽一个改变属性行为,改变游戏。向 0 敞开大门。

拖放第二个更改属性行为并更改开门。计时器到 1。

接下来,拖放一个计时器行为,并在选中“运行到完成”的情况下,将设置更改为“2 秒后”。

最后,将更改属性行为拖放到计时器中,并更改开门。定时器到 0。

完整的规则如图 8-8 所示。

Image

图 8-8。 改假统治

按住 Option 键并向下拖移来复制规则。将其命名为“更改为真”你基本上会把结果反过来。将“全部”应用于以下情况:

  • [Attributes] [Games]. Open "is" false "
  • "Actor receives event" "and" Actor type ""ball "
  • "Attribute" "Open Door" overlaps or conflicts. Timer ""=" "0 "

然后拖拽一个改变属性行为,改变游戏。打开 1 号门。

拖放第二个更改属性行为并更改开门。计时器到 1。

接下来,拖放一个计时器行为,将设置更改为“2 秒后”,并勾选“运行至完成”。

最后,将更改属性行为拖放到计时器中,并更改开门。定时器到 0。

完整的规则如图 8-9 所示。

Image

图 8-9。 变真法则

门规则和行为

假设门位于屏幕的顶部,向下打开(如果你想让门向上或向左或向右,你可以很容易地调整设置)。将 Y 位置的初始值存储在 actor 属性中,并对 Y 位置值减去 actor 的高度进行前后插值。

首先,创建一个 real 类型的新 actor 属性,并将其命名为“InitialY”

接下来,拖放一个更改属性行为和更改门。最初是门。根据图 8-10 定位 Y 轴。

Image

图 8-10。 存储初始 Y 位置值

然后,创建一个新规则,并将其命名为“OpenDoor is True”这条规则将用于开门。将“全部”应用于以下情况:

  • [Attributes] [Games]. Open "is" true "
  • [attribute] [door]. Location. Y" "= ""gate. Initially "

第二个条件将检查门是否关闭。

拖放插值行为,并将设置更改为“门”。位置。Y " "门。首先是门。尺寸.高度" " 0.5 " "线性。"

完整的规则如图 8-11 所示。

Image

图 8-11。 开门是真规则

最后,创建一个新规则,并将其命名为“OpenDoor is False”这条规则将用于关门。将“全部”应用于以下情况:

  • [Attributes] [Games]. Open "is [false ??]
  • [attribute] [door]. Location. Y "Gate. Initial "

第二个条件将检查门是否关闭。

拖放插值行为,并将设置更改为“门”。位置。Y " "门。最初为“0.5”线性

完整的规则如图 8-12 所示。

Image

图 8-12。 开门是假规则

胜利洞规则和行为

这一部分的最后一步是当球碰到胜利洞演员时重置游戏。对于一个真正的游戏,你会改变场景到下一个级别。

创建一个新规则,条件为“执行元接收事件”“与“执行元类型”“球”重叠或冲突然后按照图 8-13 将一个重置游戏行为拖放到规则中。

Image

图 8-13。 胜利洞法则

通过布置场景来设计游戏区

是时候布置场景了。首先,拖放背景演员,并尝试将其定位在场景的中心。

然后,您将使用不同大小的墙角色的多个实例。GameSalad 允许您拥有多个不同大小的 actor 实例,但仍然坚持规则和行为的原型。

将墙演员拖放到场景中。按照图 8-14 将鼠标指针定位在演员的侧面(在白色圆圈上),按住点击并保持点击以调整演员的大小。

Image

图 8-14。 调整演员尺寸

将尺寸改为最小宽度,高度与场景高度匹配。然后按照图 8-15 将墙移动到场景左侧。

Image

图 8-15。 定位第一面墙

现在重复操作,以得到类似于图 8-16 的迷宫。

Image

图 8-16。 迷宫布局

最后,根据图 8-17 将球、胜利洞、开门和门演员拖放到现场。

Image

图 8-17。 完成布局

在您的设备上尝试游戏。

实现灯光特效

LightFX 被认为是带有灯光的特殊效果。它们通常用于视频游戏中,以增加交互性或增强玩家体验。

打开文件Labyrinth-step1.gameproj,可以在这个阶段直接开始。

我现在给你看一个非常酷的魔术。这就是我所说的“灯灭了”想象一下球周围只有少量光线的迷宫游戏;现场一片漆黑。当然,光线必须跟随球,你会通过球发现这个区域。如果你已经有了 iOS 版的迷宫游戏,你就知道这是一个通用的功能。

诀窍很简单。您将使用一个中间有透明圆盘的黑色图像。盘的大小取决于你想做游戏的难度。此外,图像的大小应该是场景大小的两倍。圆盘的中心将被约束到球的位置。有了这个尺寸,无论球去哪里,整个场景都会被覆盖。

你将使用一些游戏属性来存储球的位置。创建两个名为“BallX”和“BallY”的游戏属性

在演员编辑器中打开球演员。拖放一个约束属性行为并改变游戏。BallX 到 Ball.Position.X .对 BallY 和 Position 重复相同的操作。y 根据图 8-18 。

Image

图 8-18。 约束球

导入位于 Chapter_8 文件夹中名为Light Off.png的图像。创建一个新演员,并将图像拖放到新演员上。将该演员重命名为“Light_Off”

在演员编辑器中打开演员,拖放一个约束属性行为,设置为“Light _ off . position . x”“game . ballx .”用 Light_Off.position.Y 和 game.BallY 重复操作

将熄灯演员定位在场景中。

在您的设备上尝试游戏。

实现声音特效

SoundFX 被称为带有声音的特殊效果。您将使用声音使您的游戏更具互动性,更生动。它也将为玩家提供额外的信息。

打开文件Labyrinth-step2.gameproj,可以在这个阶段直接开始。

为了让游戏更真实,你会使用一个小声音特效——没有什么花哨,只是球撞到墙上时发出的小声音。这将说明如何使用播放声音行为。

我在这里将重点放在播放声音的行为上,但是播放音乐的工作方式大致相同。还有一些行为叫做暂停音乐和继续音乐,我稍后会谈到。

注意:播放声音与播放音乐

当声音小于 30 秒时,可以使用播放声音。当声音超过 30 秒时,您应该使用播放音乐。请记住,GameSalad 一次只能播放一个音乐片段,但可以同时播放多个声音。

与图像类似,您需要将声音导入到您的库中,以便能够使用它们。

根据图 8-19 点击演员编辑器或场景编辑器中的声音选项卡。

Image

图 8-19。 声音标签

单击+号导入新的音频文件。选择名为brick.mp3的文件进行导入。然后,您需要根据图 8-20 选择是将文件作为音乐还是声音导入。

Image

图 8-20。 音乐或声音导入

选择“导入为声音”

接下来,在 Ball actor 中创建一个规则,在每次与墙壁发生碰撞时播放声音。在演员编辑器中打开球演员。创建一个新规则,条件将是“执行元接收事件”“与“执行元类型”“墙”重叠或冲突根据图 8-21 ,将播放声音行为拖放到规则中,并将设置更改为声音:“砖块”和音量:“0.50”,并选中“运行到完成”。

Image

图 8-21。 播放声音规则

我建议尽可能多地使用定位音。定位声音功能增加了大量的交互性。如果播放声音的演员在屏幕的左侧,会给人一种声音是从左侧传来的感觉,非常好看的效果。此外,如果演员在播放声音时移动,声音将随演员一起“移动”。

你可以在你的设备上试试这个游戏。

MP3 或其他格式

GameSalad 支持Cafoggmp3m4a等多种声音格式。

关于暂停音乐和继续音乐:

如果您在游戏中实现了暂停功能并有背景音乐,您可能希望暂停音乐,并在玩家取消暂停游戏后继续播放。为此,您需要使用暂停音乐和继续音乐行为。

总结

在这一章中,你回顾了创建一个新项目和定义游戏的基础。你还学到了一些非常强大而简单的特效,这些特效肯定会增加游戏和玩家体验的趣味。

你有:

  • Review the creation of new GameSalad projects.
  • Strengthen the use of rules and behaviors to define gameplay.
  • Learned how to realize lighting special effects.
  • Learned how to use sound behavior to achieve sound effects.

九、奖金,游戏中心,和 iAd:越狱

在这一章中,你将完成你在第四章中开始的游戏。我准备了一个名为BreakaWallPartII.gameproj的文件,其中包括背景图片和演员图片。这些改进将不在本章讨论。关于如何实现图形和声音,请参考前面的章节。

在这一章中,我想在你把你的游戏提交到 App Store 之前,集中讨论几个元素的最终确定。您将学习如何:

  • Create the start screen.
  • Implement a scoring system.
  • Increase the interactivity of the game with in-game rewards.
  • Publish the score on the game Centerleaderboard.
  • Make money with iAd.

你可以免费下载我版本的《越狱》,在本章和第四章中用来说明游戏构建的概念

[itunes.apple.com/us/app/break-a-wall/id496154190?ls=1&mt=8](http://itunes.apple.com/us/app/break-a-wall/id496154190?ls=1&mt=8)

玩得开心,争取排行榜第一!

设计开始屏幕

每个游戏都有一个开始屏幕,也称为菜单页面。我说的不是启动游戏时第一屏可能出现也可能不出现的闪屏。闪屏不会提供与玩家的交互性;这只是推广你品牌的一种方式。

开始屏幕是玩家体验中非常重要的一步,因为它将引导他/她做出不同的选择。当然,最明显的选择是玩这个游戏,但是你也可以提供一些说明。

关于说明的说明:

苹果喜欢直观的应用。然而,有些游戏需要一定程度的指导才能玩游戏或理解规则。

以下是我在游戏中系统应用的指导原则:

1)如果你的游戏非常简单,使用起来非常直观,就不要添加说明。保持简单明了。

2)如果你的游戏简单直观,但你想给出非直观的附加说明,创建一个场景来包含说明,并使其可从菜单访问。

3)如果你的游戏需要一些学习,使用第一级或创建一个互动的场景让玩家学习游戏。当新的情况出现时,你也可以在游戏中加入指令。

要在 GameSalad 中设计一个开始屏幕,您将创建一个特定的场景。该场景将是顺序中的第一个场景(从左到右)。

在 GameSalad 中打开文件BreakaWall-partII-step1.gameproj

创建一个新场景,并将其命名为“家”将场景拖放到第一个位置(最左侧),如图图 9-1 所示。

Image

图 9-1。 首页场景

将 Homescene 放在这个位置可以确保它是你开始游戏时的第一个场景。

关于闪屏的注意事项:

正如您将在第十一章中看到的,您可以在发布过程中创建一个定制的闪屏,但这仅限于静态图像。默认情况下,这将是一个 GameSalad 闪屏。一个技巧是用黑色图像替换启动画面,并在第一个场景中设置一个动画,作为动画启动画面。

创造演员

在本节中,您将创建几个额外的演员在您的主屏幕上使用。背景演员将用于包含背景图像。您还将创建几个按钮来为播放器添加控件。

主页

创建一个新的 actor 并双击它以打开 Actor 编辑器。用表 9-1 中的参数编辑演员属性。

Image

单击 Images 选项卡显示图像资源,并将Home.png拖放到 actor 中。

开始游戏

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

Image

单击 Images 选项卡显示图像资源,并将play1.png拖放到 actor 中。

扬声器

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

Image

单击 Images 选项卡显示图像资源,并将Speaker.png拖放到 actor 中。

实现规则和行为

现在是时候定义演员背后的逻辑了。最重要的逻辑将存在于您刚刚创建的控制角色中。开始游戏演员将让你开始玩,扬声器演员将控制音量(开或关)。

首页

为了完美地定位背景对象,您将使用更改位置属性的技巧。

在演员编辑器中打开家庭演员。拖放更改属性行为和更改主页。位置 X 到 384。

拖放更改属性行为和更改主页。位置 Y 到 512。

这两种行为如图 9-2 所示。

Image

图 9-2。 用改变属性定位背景

现在,将演员拖放到场景中,并将其放置在大约中心的位置。

开始游戏

开始游戏演员将被用作一个按钮。您将实现一个翻转效果,以便当按钮被按下时字体的颜色发生变化。但是,因为它是一个图像,您将使用“更改图像”行为,并使用不同的图像来替换活跃的图像。

您将分两步进行。首先,当 actor 被按下时,您将把图像更改为具有不同字体颜色的图像。然后,当释放 actor touch 时,您将把图像改回原始图像。这只是创造按钮效果的众多方法之一。另一种方法是将 alpha 更改为 0.5,或者将 RGB 颜色更改为 0.5。

在演员编辑器中打开开始游戏演员。创建一个新规则,并将其命名为“触摸被按下”条件是“演员接收事件”“触摸”是“按下的”

然后将“更改图像”行为拖放到规则中,并从“将图像设置为”旁边的下拉列表中选择“播放 2”

让我们进入翻车的第二阶段。

创建一个新规则,并将其命名为“触摸已释放”条件是“演员接收事件”“触摸”是“释放”这也可以在“触摸被按下”规则的“否则”部分中完成。

然后将更改图像行为拖放到规则中,并从“将图像设置为”旁边的下拉列表中选择“播放 1”

这两条新规则如图 9-3 所示。

Image

图 9-3。 按下触摸并释放触摸

你已经有了视觉效果,但是开始游戏角色的目的是让你开始游戏。

为了达到这个目标,您将在规则“触摸被释放”中添加一些行为为了有一个平稳的过渡,我经常在实现变化场景之前使用一个短定时器。这将通过给玩家时间来查看按钮状态的变化来改善用户体验。

将计时器行为拖放到“释放触摸”规则中的“更改图像”行为下方。将计时器设置为“0.5”秒后。然后根据图 9-4 在定时器中拖放一个变化场景行为并将其设置为 1 级。

Image

图 9-4。 更新触摸被释放规则

将开始游戏角色定位在场景中。

演讲者

您将使用扬声器演员来控制声音和音乐。在本例中,您将只关注声音,但您可以对音乐使用相同的方法。

触摸扬声器会将游戏属性的状态更改为 0 或 1。您可以使用规则和布尔运算,但是我将向您展示一个很酷的模运算符技巧。

维基百科将模运算定义为返回“一个数除以另一个数的余数”的函数。

换句话说,如果你用 9 除以 4,你会得到 9 = 2 × 4 + 1。9 除以 4 的余数是 1。我们再举一个例子。如果你把 50 除以 14,你得到 50 = 3 × 14 + 8。50 除以 14 的余数是 8。

用模记法(%),你有 9 mod 4 = 1 或 9%4=1。

现在,如果你取任意一个数(整数)并对这个数取模 2,你只有两个可能的结果:0 和 1。如果该数是偶数,则该数除以 2 的余数为 null (0)。如果这个数是奇数,这个数除以 2 的余数是 1。

所以用一个简单的幺正增量和模 2 的等式,你会得到一个从 0 到 1 和从 1 到 0 的结果。等式是 soundOn = (soundOn+1)%2。

默认情况下,您希望打开声音。所以初始值是 soundOn=1。当您按下扬声器 actor 时,您会得到 SoundOn = (1+1)%2 = (2)%2 = 0。下一次按扬声器 actor 时,您会得到 SoundOn = (0+1)%2 = (1)%2 = 1。诸如此类…

当你想有声音时,SoundOn 等于 1,当你不想有声音时,SoundOn 等于 0。所有关于声音的规则都基于 SoundOn 属性的状态。

为了便于管理,您将控制音量,而不是为每个 PlaySound 行为创建一个规则。当 SoundOn 等于 1 时,音量等于 1。分别地,当 SoundOn 等于 0 时,volume 等于 0。

您还将在声音关闭时实现带有交叉扬声器图标的翻转。

让我们现在就开始吧!

创建一个整数类型的新游戏属性,并将其命名为“SoundOn”根据图 9-5 ,赋予该属性默认值 1。

Image

图 9-5。 声音属性

在执行元编辑器中打开扬声器执行元。创建一个新规则,并将其命名为“触摸被按下”条件是“动作接收事件”“触摸”被“按下”接下来,拖拽一个改变属性行为,改变游戏。游戏开始。根据图 9-6 ,SoundOn+1)%2。

Image

图 9-6。 触摸被按下规则

现在,创建一个新规则,并将其命名为“SoundOn 等于 1”条件将是“游戏属性”。SoundOn""=""1 "。接下来,拖放一个更改图像行为,并将图像设置为扬声器。最后,拖放更改属性行为和更改设备。根据图 9-7 ,音频音量为 1。

Image

图 9-7。 SoundOn 等于 1 的规则。

最后,创建一个新规则,并将其命名为“SoundOn 等于 0”条件是“属性”“游戏。SoundOn""=""0 "。接下来,拖放一个更改图像行为,并将图像设置为扬声器关闭。最后,拖放一个改变属性行为和改变设备。根据图 9-8 将音频音量调至 0。

Image

图 9-8。 SoundOn 等于 0 规则

将演讲者演员放置在左下角的场景中。

你现在可以在 GameSalad 的预览窗口中测试你的作品。

添加记分

在这一章的后面,我会谈到游戏中心。但是首先你需要有一个评分系统。你会让它变得非常简单。每破坏一个青砖,分数就会加一分。而且每摧毁一个红砖,你就会在分数上加两分。要从这一点跟踪项目,请打开名为BreakaWall-partII-step2.gameproj的文件。

Integer 类型的游戏属性将被用于保持分数。您将确保每次开始游戏时手动重置。每击中一块砖,分数就会增加。最后但同样重要的是,您将在屏幕的右上角区域显示分数,这样玩家可以跟上他/她的进度。

首先,让我们创建分数属性。创建一个 Integer 类型的新游戏属性,并将其命名为“Score”保持默认值为零。

打开开始游戏演员进入演员编辑器。将更改属性行为拖放到规则“触摸被释放”和更改游戏中。根据图 9-9 得分为 0。

Image

图 9-9。 更新触摸被释放规则

在 actor 编辑器中打开 Brick1 actor。将更改属性拖放到现有规则中,然后更改游戏。游戏得分。根据图 9-10 ,得分+1。

Image

图 9-10。更新了 Brick1 规则

对砖块 2 重复相同的操作,但为每个砖块 2 添加两个点。在 actor 编辑器中打开 Brick2 actor。将更改属性拖放到现有规则中,然后更改游戏。游戏得分。根据图 9-11 ,得分+2。

Image

图 9-11。更新了 Brick2 规则

你可以跟上比分,但是把比分显示给玩家不是很好吗?!

ScoreDisplay 演员

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

分数显示规则和行为

将显示文本行为拖放到 ScoreDisplay 执行元中。按如下方式更改设置(如图 9-12 所示):

  • Text: "Score:" .. Game. mark
  • Font: cross toe
  • Color: purple

Image

图 9-12。 显示 ScoreDisplay 演员的文本

在场景编辑器中打开 1 级场景,按照图 9-13 将场景中的 ScoreDisplay 演员放置在中间顶部。

Image

图 9-13。 一级场景

创建额外奖励演员

为了让游戏更有趣,你将在一些砖块中加入以下奖励:

  • 50 points bonus
  • 100 bonus points
  • Automatic bullet bonus

点数奖励将由隐藏它们的砖块产生,如果球拍碰到它们,点数奖励将计入得分。同样的原理也适用于自动子弹,但它不是增加点数,而是让球拍自动触发子弹。这些子弹会摧毁砖块。只要布尔游戏属性 AutoBullet 设置为 true,子弹就会自动射出。默认情况下,它被设置为 false。捕捉胶囊将把它设置为真。丢球会把它设置回 false。

要从这一点跟踪项目,请打开名为BreakaWall-partII-step3.gameproj的文件。

50 点封顶的演员

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

Image

单击 Images 选项卡显示图像资源,并将50 pt.png拖放到 actor 中。

100 磅帽演员

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

单击 Images 选项卡显示图像资源,并将100 pt.png拖放到 actor 中。

自动子弹演员

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

Image

单击 Images 选项卡显示图像资源,并将Bullet.png拖放到 actor 中。

子弹演员

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

Image

单击 Images 选项卡显示图像资源,并将Bullet-img.png拖放到 actor 中。

你新创建的演员应该类似于图 9-14 。

Image

图 9-14。 演员督察

实现额外奖励规则和行为

基本上,你希望包含额外奖励的砖块产生一个额外奖励的演员。额外奖励演员将向下移动,当它与球拍重叠时,它将启用奖励。

50 磅扬程

在 actor 编辑器中打开 50 pt cap actor。将“更改速度”行为拖放到演员中,并将设置更改为:

  • Direction: 270
  • Relative: Scene
  • Speed: 150

创建一个新规则,并将条件设置为“参与者接收事件”“与“参与者类型”“球拍”重叠或冲突”拖放一个改变属性行为和改变游戏。游戏得分。得分+50。拖放一个销毁行为。根据要执行的操作数量,如果将销毁行为放在它们之前,可能会出现问题。根据经验,我建议您将销毁行为放在最后。演员动作窗格应按照图 9-15 所示。

Image

图 9-15。 50 pt cap action pane

100 pt 头

在 actor 编辑器中打开 100 pt cap actor。将“更改速度”行为拖放到演员中,并将设置更改为:

  • Direction: 270
  • Relative: Scene
  • Speed: 150

创建一个新规则,并将条件设置为“参与者接收事件”“与“参与者类型”“球拍”重叠或冲突”拖拽一个改变属性的行为,改变游戏。得分。分数+100。拖放破坏行为。演员动作窗格应按照图 9-16 所示。

Image

图 9-16。 100 pt cap action pane

自动子弹

创建一个 Boolean 类型的游戏属性,将其命名为“AutoBullet”,并将默认值设置为 false。

在演员编辑器中打开自动项目符号演员。

将“更改速度”行为拖放到演员中,并将设置更改为:

  • Direction: 270
  • Relative: Scene
  • Speed: 150

创建新规则,并将条件设置为“参与者接收事件”“与“参与者类型”“球拍”重叠或冲突”拖放一个改变属性行为和改变游戏。AutoBullet 到 1。拖放破坏行为。演员动作窗格应该与图 9-17 中的相匹配。

Image

图 9-17。 【自控动作面包】

子弹

在执行元编辑器中打开项目符号执行元。将“更改速度”行为拖放到演员中,并将设置更改为:

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

创建一个新规则,并将“执行元接收事件”“与类型为“Brick1”的执行元“重叠或冲突”以及“执行元接收事件”“与类型为“Brick2”的执行元“重叠或冲突”的条件设置为“任何”拖放破坏行为。演员动作窗格应该与图 9-18 中的匹配。

Image

图 9-18。 项目符号操作窗格

您现在需要编辑以下参与者:

  • 砖块 1
  • 砖块 2
  • racket
砖块 1

在 actor 编辑器中打开 Brick1 actor,并添加一个设置为“Any”的条件根据图 9-19 ,新规则是“执行元接收事件”与“项目符号类型的执行元”发生“重叠或冲突”。

Image

图 9-19。 修改 Brick1 规则

砖块 2

重复修改。在 actor 编辑器中打开 Brick2 actor,并添加一个设置为“Any”的条件根据图 9-20 ,新规则是“执行元接收事件”与“项目符号类型的执行元”发生“重叠或冲突”。

Image

图 9-20。 修改 Brick2 规则

球拍

在 actor 编辑器中打开球拍 Actor,创建一个新规则。条件是“属性”“游戏。AutoBullet”是“真的”拖放设置为“每”“1”秒的计时器行为。然后,拖放“繁殖演员”行为,并将设置修改为:

  • Actor: Bullets.

  • Layer order: in actors

  • Direction: 0

  • Location: 0&0

  • Relative to: actor

拖放播放声音行为,并将设置更改为:

  • Voice: Bullets fire.
  • Run: checked.
  • Volume: 1
  • Pitch: 1

新规则如图 9-21 所示。

Image

图 9-21。 球拍新规

现在,您将在现场随机放置奖金。在场景编辑器中打开级别 1 场景。双击场景中的任意砖块。这将打开 actor 原型的实例。单击锁状图标编辑执行元的实例。修改实例只会修改场景中的这个实例,而不会修改所有演员。将 Spawn Actor 行为添加到实例的规则中,并将设置更改为:

  • 演员:50 pt 头
  • Layer order: in actors
  • Back: 0
  • Location: 0&0
  • Relative to: actor

更新后的规则如图 9-22 所示。

Image

图 9-22。 更新了砖块规则

用不同的砖块重复几次,演员如下:

  • 50pt 头* 100pt 头* 自动子弹

随机砖块上的 100 点上限和自动子弹实现如图图 9-23 和图 9-24 所示。

Image

图 9-23。 100 点封顶实现

Image

图 9-24。 自动子弹实现

在游戏中心排行榜上公布分数

从这一点开始,打开名为BreakaWall-partII-step4.gameproj的文件。

游戏中心是苹果的社交游戏平台。它让玩家通过展示最佳结果、成就和游戏推荐来分享他们的游戏体验。游戏中心的功能只有专业会员才能使用。苹果在[www.apple.com/game-center/](http://www.apple.com/game-center/)提供更多信息。

基本上,一旦你验证了你自己,你就可以在叫做排行榜的区域发布你的分数,并在叫做成就的区域追踪特定的游戏成就。游戏中心还有更多的功能,但这两个是最重要的。

在我写这一章的时候,GameSalad 只实现了认证和排行榜功能。成就部分位于 2012 年上半年的路线图中。

让我们更深入地了解身份认证和排行榜。身份验证功能将使您的用户能够使用他们的别名登录 Game Center。玩家使用他们的别名来验证他们的身份,管理朋友列表,并发布状态消息。玩家通过认证后,可以向游戏中心发布分数。排行榜上公布的分数会对所有选手进行排名,目的是培养竞争意识。

在设置您的 GameSalad 项目之前,您需要在 Apple provisioning portal 中创建一个排行榜。你将决定成就的单位:时间、金钱或分数。每场比赛可以有几个排行榜。你可以为每种类型的游戏设置排行榜(与手表对战的时间,玩街机模式的点数,等等。).

让我们在《越狱》中实现游戏中心的功能。

GameSalad 提供了三种与 Game Center 相关的行为:

  • log in
  • Publish score
  • Show leaderboard

为了正确配置 Game Center 行为,您需要一个排行榜 ID。这将是张贴和显示分数所必需的。排行榜 ID 的创建将在第十一章的中介绍。您将获得一个唯一的字母数字 ID,将在以下步骤中使用。

登录游戏中心

打开BreakaWall-partII-step4.gameproj。打开家庭场景。在演员编辑器中选择家庭演员。

按照图 9-25 从专业选项卡中拖放一个“游戏中心-登录”行为。

Image

图 9-25。 游戏中心行为

家庭演员如图图 9-26 所示。

Image

图 9-26。 首页演员动作窗格

发布分数

在一场比赛中,会有两个关键时刻公布您的分数:

  • When you are loose

  • When you win

输了之后公布比分

在演员编辑器中打开球演员。转到条件为“Attribute game.lives = 0”的规则。将“游戏中心–公布分数”行为拖放到规则中。要发布的属性是“game.Score”。输入您的排行榜 ID。你的屏幕应该看起来类似于图 9-27 (当然,有不同的排行榜 ID)。

Image

图 9-27。 游戏输了公布比分

当你赢的时候公布分数

公布比分的最佳时刻是比赛获胜的时候。最终演员会准确地告诉你这是什么时候发生的。这个演员是重置游戏的控制。你需要在重置游戏前公布分数。

在演员编辑器中打开结束演员。将“游戏中心–公布分数”行为拖放到规则中。要发布的属性是“game.Score”。输入排行榜 ID。屏幕应类似于图 9-28 中的。

Image

图 9-28。 赢得游戏后公布分数

显示分数

在主页上,添加一个按钮来显示全球所有玩家的最高分数排行榜。

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

Image

单击 Images 选项卡显示图像资源,并将Leaderboard.png拖放到 actor 中。

在演员编辑器中打开演员。创建一个新规则,条件为“执行元接收事件”“触摸”为“按下”然后拖放“Game Center–Show leader board”行为,并输入排行榜 ID 和分数的时间段(今天、本周或所有时间)。屏幕应类似于图 9-29 中的。

Image

图 9-29。 显示排行榜

将排行榜演员放在家庭场景中戏剧演员的正下方。

iAd

iAd 是苹果广告平台。它带有开发免费增值模式的意图。什么是免费增值模式?基本上,你可以开发一个对用户免费的应用/游戏,但在游戏空间内显示广告,以从广告或 iAP(应用内购买)中获得收入。

iAd 为您提供了一个完整的框架,可以在您的应用中显示横幅广告或全屏广告;这些直接来自苹果。因此你不需要为销售广告空间而烦恼。你只需要为广告空间设计一个区域,然后 iAd 框架将从那里管理它。

要在 GameSalad 项目中使用 iAd,您必须加入 iAd 网络。在 iTunesConnect 中,第一步是设置您与 Apple 的合同。

iAd 是 iOS 4 推出的。这意味着所有 iOS 4 之前的版本都将无法兼容 iAd。iAd 功能仅对专业会员开放。

从这一点开始,打开名为BreakaWall-partII-step5.gameproj的文件。

配置 iAd 极其简单。您需要为您的应用激活 iAd,如第十一章中的所述。一旦 iAd 被激活,您需要实现 iAd 行为。

你需要考虑广告的显示区域,这样它才不会干扰你的游戏用户界面。在 iPhone 上,纵向广告是 320 × 50 像素,横向广告是 480 × 32 像素。在 iPad 上,人像广告是 768 × 66 像素,风景广告是 1024 × 66 像素。

在演员编辑器中打开家庭演员。将一个 Show iAd 行为拖放到参与者中。根据图 9-30 选择“底部”作为横幅位置。

Image

图 9-30。 展示 iAd 行为

就这样!iAd 的一切都准备好了。真正的广告只有在应用发布后才会显示。

您可以通过打开名为BreakaWall-partII-step6.gameproj的文件来检查项目。

关于 iAd 的注意事项:

iAd 不是摇钱树。收入水平很低。在撰写本文时,《越狱》已被下载了约 1,400 次。到目前为止,iAd 收入低于 2 美元(见图 9-31 )。

Image

图 9-31。 iAd 收入破墙

总结

在这一章中,你已经学习了许多新元素。你的游戏现在有一个开始屏幕,可以张贴分数到游戏中心。此外,你已经开始用 iAd 赚钱了。这将大大增加游戏体验,并使您能够从游戏中获得收入。

在本章中,您学习了如何:

  • Design a start screen.
  • Increase the depth of the game with extra bonus.
  • Achieve score distribution in the game center.
  • Enable iAd for your game.

十、设备内部时钟和循环运动:非游戏应用

虽然 GameSalad 的主要目的是创建游戏,但是你可以用它来创建其他应用,只要你的应用只需要 GameSalad 中可用的框架。

为了说明这一点,您将参与两个项目。首先,你将创建一个显示 iOS 设备时间的模拟时钟,然后你将创建一个节拍器,如图 10-1 所示。

通过使用你所有的游戏知识,你可以创建一些非常有趣的应用。你将主要使用你以前见过的行为和概念,但是我将介绍一些也可以在游戏中使用的新概念。

Image

图 10-1。 模拟时钟和节拍器

这一章的目的是说明通过跳出框框思考,你可以扩展 GameSalad 的可能性。

在本章中,您将学习如何:

  • Making an app with standard GameSalad features is not a game.
  • And access that internal clock of the device.
  • Use basic mathematics to create circular motion.

用设备时钟和旋转创建模拟时钟

在本项目中,您将构建一个模拟时钟,以小时、分钟和秒显示时间。这将是一个相对较短和容易的项目。你不应该花超过 30 分钟来实现。

你将学习基于设备内部时钟实现行为。您还将学习如何通过旋转和角度计算来模拟时钟指针的运动。

访问设备时钟

为了显示当前时间,您将使用设备属性中的时钟,这是一组很好的属性。根据图 10-2 ,时钟可让您访问设备时间,从年到毫秒。

Image

图 10-2。 时钟设置属性

虽然这个例子只创建了一个时钟,但是您将涉及到一些时钟属性的操作,您可以使用这些属性来扩展您的想法,并将这些属性集成到游戏的新功能中。例如,你可以在菜单页面上创建一个特殊的图标,只在 7 月 4 日庆祝独立日时显示。

创建时钟项目

打开 GameSalad Creator 并创建一个新项目。根据表 10-1 配置项目信息。

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

制作背景和时钟指针

要设计时钟,您需要创建以下角色:

  • Clock: This is the frame of the clock.
  • Hour: This is the hour arrow.
  • Minute: This is the minute arrow.
  • Seconds: This is the second arrow.
  • Button: This is a graphic technique to hide the source of the arrow.

在创建演员之前,导入将用于这些演员的图像。打开场景编辑器并选择图像选项卡。点击+号,导入以下文件:chap10-button.pngchap10-clock.pngchap10-hours.pngchap10-minutes.pngchap10-seconds.png。这些图片文件位于第十章文件夹中。您的图像选项卡应该与图 10-3 匹配。

Image

图 10-3。 图片

作为奖励,如果你想定制你的时钟,我还为每张图片提供了 Illustrator 文件。

仔细看看箭头。你注意到什么奇怪的事情了吗?图像大小是可见箭头的两倍。这不是一个错误。这是个骗局!稍后我会解释。

时钟

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

Image

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

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

Image

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

分钟

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

Image

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

小时

创建一个新的 actor 并双击它以打开 Actor 编辑器。用表 10-5 中的参数编辑演员属性。

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

纽扣

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

Image

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

创建时钟机制:规则和行为

创造一个真实世界的机械钟可能是一件艺术品。它很小,机芯需要完美,所以可能需要几个月的时间。幸运的是,虚拟模拟时钟要简单得多。时间信息直接从器件内部时钟获取。你的演员的行为将最大限度地确保手正确移动。

时钟

为了在屏幕上完美地定位时钟,您将通过更改属性行为来定位它。

在演员编辑器中打开时钟演员。将一个更改属性行为拖放到 actor 中,并将 clock.position.X 更改为 160。将第二个更改属性行为拖放到 actor 中,并将 Clock.position.Y 更改为 240。时钟动作视图应与图 10-4 中的相匹配。

Image

图 10-4。 时钟动作视图

为了提高效率并节省一些宝贵的时间,您将创建一个自定义行为,将演员放置在屏幕的中心。

创建一个新组,命名为“定位在中心。”将您刚刚创建的两个变更属性移动到新组中。

在“行为清单”窗格中,通过单击选择“自定义”(位于“标准”旁边)。按照图 10-5 将您的组拖放到窗格中。就这样!您刚刚创建了您的第一个自定义行为。您将对这个项目中的每个演员使用这些行为,以将他们完美地定位在屏幕的中心。

Image

图 10-5。 自定义行为盘点

按钮

双击按钮 actor,在 Actor 编辑器中打开它。从自定义行为清单中拖放“居中定位”行为。

双击 Seconds actor 在 actor 编辑器中打开它。从自定义行为清单中拖放“居中定位”行为。

回到与可见箭头相比图像的奇怪尺寸,技巧是实现演员每秒的旋转。但是旋转属性从其中心旋转演员。因此,让一个演员将箭头的尺寸放大一倍提供了一种错觉,即只有箭头在移动,而实际上这是一个完整的演员。

拖放约束属性行为,并将秒.旋转更改为设备。时钟。秒*6。

为什么会有负号?第二章讨论了 GameSalad 测量角度的方式:逆时针。所以为了有一个顺时针的运动,你需要让秒为负。

同样,第二个箭头将覆盖 60 秒内的完整旋转。完整的旋转是 360 度。所以箭头应该覆盖每秒 6 度(360/6)。

秒动作视图应与图 10-6 中的相匹配。

Image

图 10-6。 秒动作查看

分钟

双击分钟执行元,在执行元编辑器中打开它。从自定义行为清单中拖放“居中定位”行为。拖放约束属性行为并更改设备的分钟数。时钟。分钟*6。

小时

双击小时执行元,在执行元编辑器中打开它。从自定义行为清单中拖放“居中定位”行为。

拖放约束属性行为并更改设备的小时数。时钟。小时* 6–30 *设备。Clock.Minutes/60.

为了显示两个小时之间的运动,您在小时的情况下增加了一些额外的度数。如果箭头一下子移动 30 度,视觉效果就不好看了。你知道时针会在 60 分钟内转 30 度。因此,它将每分钟移动 0.5 度。

小时演员的动作视图应与图 10-7 中的相匹配。

Image

图 10-7。小时约束属性

组装时钟:布置场景

场景的布局非常简单,因为你已经使用行为定位了你的演员。但是你放置演员的顺序对视觉效果很重要。

根据图 10-8 按以下顺序将演员安置在场景中央:

  • clock
  • hour
  • minute
  • second
  • button

Image

图 10-8。 时钟场景

在 iPhone 上或预览窗口中预览项目。

循环运动:节拍器

节拍器是一种发出有规律的节拍的装置(图 10-9 )。您可以按秒设置节拍数。它用于帮助音乐家跟随一致的节奏。

Image

图 10-9。 一个机械节拍器

在本节中,您将学习如何实现循环运动。这个概念很容易在游戏项目中重复使用。

为了让您更好地了解结果,请打开文件metronome_final.gameproj并单击预览。

创建节拍器项目

打开 GameSalad Creator 并创建一个新项目。根据表 10-7 配置项目信息。

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

节拍器机械组件:创建演员

为了设计你的节拍器,你需要创建以下角色:

  • metronome
  • weight
  • sway
  • open
  • close

在创建演员之前,导入这些演员的图像。打开场景编辑器并选择图像选项卡。点击+号,导入以下文件:chap10-metronome.pngchap10-pendulum.pngchap10-weight.png。这些图片文件位于第十章文件夹中。你的图像标签应该匹配图 10-10 。

Image

图 10-10。 图片

作为奖励,如果你想定制你的节拍器,我还为每张图片提供了 Illustrator 文件。

节拍器

创建一个新的 actor 并双击它以打开 Actor 编辑器。用表 10-8 中的参数编辑演员属性。

Image

你可能已经注意到演员的尺寸很奇怪。这肯定不是针对内存优化的;如果你在寻找性能,你应该总是优化演员大小为 4 的倍数。

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

体重

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

Image

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

根据表 10-10 为权重创建两个演员属性。

Image

钟摆

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

Image

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

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

Image

离开

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

Image

存储信息:定义属性

根据表 10-14 创建游戏属性。

创造机械运动:规则和行为

节拍器的基本运动是来回移动,因此具有循环运动。循环的速度取决于重物的位置。您将使用规则和行为来实现这个逻辑。

节拍器规则和行为

创建一个群组,将其命名为“定位节拍器”拖放一个改变属性行为和改变节拍器。位置 X 到 160 度。拖放第二个更改属性行为和更改节拍器。位置 Y 到 240。

论规则与行为

创建一个组,命名为“定位按钮”拖放更改属性行为并打开。位置 X 到 60。拖放第二个更改属性行为并打开。位置 Y 到 30。

拖放“显示文本”行为,并在里面键入文本“开”。您可以将所有其他设置保留为默认值。动作视图应与图 10-11 中的相匹配。

Image

图 10-11。上的行动查看

最后,创建一个新规则,并将其命名为“On is pressed”条件是“演员接收事件”“触摸”是“按下的”然后拖拽一个改变属性行为,改变游戏。按照图 10-12 移动到 1。

Image

图 10-12。上的是被压制的统治

此规则用于检测 On 区域中的触摸,然后将 InMovement 属性更改为 true。您将使用该属性来授权钟摆的运动。

违反规则和行为

创建一个群组,并将其命名为“定位关闭按钮”拖放更改属性行为并打开。位置 X 到 260。拖放第二个更改属性行为和 changeon。位置 Y 到 30。

拖放“显示文本”行为,并在里面键入文本“关”。您可以将所有其他设置保留为默认值。动作视图应与图 10-13 相匹配。

Image

图 10-13。 起飞行动查看

最后,通过在按住 Option 键的同时向下拖动规则来复制 On 规则。将其命名为“关闭已按下”条件是“演员接收事件”“触摸”是“按下的”然后拖拽一个改变属性行为,改变游戏。按照图 10-14 移动到 0。

Image

图 10-14。 关了就按下了规则

该规则用于检测关闭区域中的触摸,然后将 InMovement 属性更改为 false。您将使用该属性来停止钟摆的运动。

钟摆规则和行为

创建一个组,命名为“摆好钟摆”拖放更改属性行为并打开。位置 X 到 160 度。拖放第二个更改属性行为并打开。根据图 10-15 将 Y 定位到 100。

Image

图 10-15。 定位摆

打开声音清单视图(单击“图像”选项卡旁边的“声音”选项卡)。单击+号导入新声音。从 Chap4_files 文件夹中选择名为sound4.mp3的文件。将文件作为声音导入。

现在,您将创建运动。为此,你需要知道钟摆在两个方向上的最大旋转。设置总共 20 度的旋转角度:-10 到+10。但是起始角度是 90 度,所以钟摆会从 80 度旋转到 100 度,来回旋转。您将使用“插值”行为使移动独立于速度属性。

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

  • [Attributes] [Pendulum].

  • "Attributes" [Game Rotation]. [InMovement] is "true"

然后拖放插值行为并更改设置。

  • Interpolation property: pendulum. rotate
  • To: 100
  • Duration: Game speed
  • Function: straight line

接下来,拖放播放声音行为,并选择声音 4 作为要播放的声音。将所有其他设置保留为默认值。

规则如图图 10-16 所示。

Image

图 10-16。 插值到 100 规则

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

  • [Attributes] [Pendulum].
  • [Attribute] [Game Rotation] = [100]. [InMovement] is "true"

然后拖放插值行为并更改设置。

  • Interpolation property: pendulum. rotate
  • To: 80
  • Duration: Game speed
  • Function: straight line

接下来,拖放播放声音行为,并选择声音 4 作为要播放的声音。将所有其他设置保留为默认值。

该规则如图 10-17 所示。

Image

图 10-17。 插值到 80 法则

创建一个名为“钟摆运动”的新组,并将刚刚创建的两条规则放入该组。

用条件“属性”创建一个新规则。InMovement”是“假的”将约束属性行为拖放到规则中,然后改变钟摆。旋转到 90 度。该规则将检测到关闭按钮已被按下,并将摆锤设置到初始位置。

用条件“属性”创建一个新规则。“InMovement”是“true”将更改属性行为拖放到规则中,然后更改钟摆。旋转到 100 度。这条规则将使钟摆旋转 100 度。然后插值规则开始。

创建一个新组,并将其命名为“开/关规则”按照图 10-18 将您刚刚创建的两条规则拖放到该组中。

Image

图 10-18。 开/关规则

最后但同样重要的是,在 actor action 视图中拖放一个约束属性行为并更改游戏。旋转到钟摆。按照图 10-19 旋转。

Image

图 10-19。 约束旋转属性

最后一个行为旨在将钟摆在任何时候的旋转值存储到名为 Rotation 的游戏属性中。稍后您将使用该值来同步权重的移动。

体重规则和行为

创建一个新组,并将其命名为“定位重量”将两个更改属性行为拖放到组中,然后更改:

  • Weight. Position. x to 160

  • . Position. Y direction 240

创建第二个组,并将其命名为“Init”将两个更改属性行为拖放到组中,然后更改:

  • Weight. InitX to weight.

  • Weight. Start with the weight.

在这个阶段,你的动作视图应该与图 10-20 相匹配。

Image

图 10-20。 位置和初始组

创建一个新规则,命名为“设置权重”该规则的条件是:

  • "属性"【gameInMovement】为"假"
  • "Actor receives event" and "Touch" means "Press"

这些条件将确保您只能在节拍器关闭时移动重量。

将两个约束属性行为拖放到规则中,然后进行更改:

  • Weight. Position. x to 160

  • 。位置。y 到 max(120,min(340,game.mouse.position.Y))

最后一个约束将确保在 120 到 340 的范围内,权重位于手指接触屏幕的位置。

将约束属性行为拖放到规则中并进行更改:

  • Weight. Start with the weight.

这将确保在按下 on 按钮之前,InitX 和 InitY 始终包含重量的最后位置。当您按下“关闭”按钮时,您将使用此信息来计算移动并将重量返回到其位置。

最后但同样重要的是,使用重量的位置来确定节拍器的速度。重量越大,钟摆走得越快。使用公式精度(120/重量。Position.Y),2)。精确功能将帮助您保持两位数字低于第二位。

将另一个约束属性拖放到规则中,然后更改:

  • 游戏。速度与精度之比(120/重量 2) 位置。Y)】

你的体重设置规则如图图 10-21 所示。

Image

图 10-21。 权重设置规则

接下来,您将创建一个规则,该规则将检测 InMovement 属性何时更改为 false,以便将权重重置到其起始位置。

创建名为“转到起始位置”的新规则这个规则的条件是“属性”“游戏”。InMovement”是“假的”将三种更改属性行为拖放到规则中,然后进行更改:

  • Weight. Location. X to weight. InitX

  • Weight. Location. Y to weight. InitY

  • Weight.

该规则如图 10-22 所示。

Image

图 10-22。转到起始位置规则

最后,您需要设置最复杂的规则。你需要让重物和钟摆同时移动,但要跨过一个弧线,同时旋转。这里涉及到一点三角学。我总是建议你用一张纸,画出你的方程式。我的草图在图 10-23 中。

Image

图 10-23。??【三角概念】为重量随时的位置

通过使用角度的余弦和正弦值(图 10-23 中的α),可以导出 c 点处 x 和 y 的值。使用幅度函数计算两点之间的距离。

创建一个新规则,并将其命名为“同步运动”条件是“属性”“游戏。“InMovement”是“true”然后将三个约束属性行为拖放到规则中并进行更改:

  • Weight. Rotate to the game.

  • Weight. Position. x to 160+ order of magnitude (weight. X-160 position, weight. position . Y-100)* sin(-【game . rotation-90】)

  • Weight. Location. Yto 100+ order of magnitude (weight. X-160 position, weight. position . Y-100)* cos(game . rotation-90)

你的尺子应该符合图 10-24 。

Image

图 10-24。 同步动作规则

制作节拍器:布置场景

场景的布局非常简单,因为您已经使用行为定位了您的演员。但是你放置演员的顺序对视觉效果很重要。

根据图 10-25 ,按以下顺序将演员置于场景中央:

  • sway
  • heavy
  • metronome
  • open
  • close

Image

图 10-25。节拍器场景

在 iPhone 上或预览窗口中预览项目。

总结

这一章总结了这本书的游戏开发。你已经看到,只需要一点点创意,GameSalad 就可以用来创建游戏以外的应用。

在本章中,您学习了如何:

  • Create applications other than games in GameSalad.
  • Use the device internal clock function.
  • Create circular motion in the game.

十一、将您的游戏提交到 App Store

就是这一刻。是的,重要的时刻。你花了无数的时间在你的游戏上,现在是时候让每个人都看到它了。但是还有更关键的一步。您需要将您的游戏发布到 App Store。

提醒:你需要是注册的 iOS 开发者。更多信息请参见第一章。

在本章中,您将经历在 App Store 中发布游戏的所有步骤:

  • You will create your own application ID.
  • You will get a distribution certificate and create a distribution preset profile.
  • You will create the iTunes Connect application profile. You will enable the game center and iAd for your game.
  • You will generate a binary file and upload it to Apple.
  • You will make the game available in the App Store.

在预配门户上获取 AppID、证书和分发预配描述文件

本节涵盖了配置门户上的所有必要操作。您将创建一个应用 ID,作为您游戏的唯一 ID。您还将使用您的分发证书(在第一章中创建)来签署您的应用。最后,您将创建用于在 GameSalad 中发布游戏的发行版配置文件。

创建您的应用 ID

首先,你需要为你的游戏创建一个 ID。这是 AppID。

转到供应门户(developer.apple.com,然后是会员中心Image iOS 供应门户)。

点击位于屏幕左侧的应用 ID 选项,然后点击新建应用 ID 按钮,进入创建应用 ID 页面,如图图 11-1 所示。

您需要提供:

  • Description: This should be a quick way to find your App ID. I suggest using the name of your game.
  • Bundle Seed ID: Unless you want to select a bundle seed ID, you can leave it as "Use Team ID". When you have several games that will share the same keychain access (to share data such as user name and password), the bundled seed ID will be used.
  • Bundle ID: Enter the unique global ID of the application. Apple suggests using a reverse domain name, but you may not have a domain name. In this case, use something unique to you that others will not choose.

然后点击提交按钮。

Image

图 11-1。 创建应用 ID

您的经销证书

在第一章的中,“在您的钥匙串中安装开发者证书”一节介绍了创建您的分发证书的步骤。这个文件被命名为iOS_distribution.cer

您可以在“证书”下的“钥匙串实用工具”中验证它是否存在。如果证书不存在,请参考前面提到的第一章的部分。

创建分发预置描述文件

下一步是为你的游戏创建一个 App Store 分发预置描述文件。

单击位于左侧的应用 id 下方的配置链接。选择 Distribution 选项卡并单击 New Profile 按钮,以进入图 11-2 所示的 Create iOS Distribution Provisioning Profile 页面。

提供以下信息:

  • Distribution method: select App Store.
  • File Name: Enter your file name. I suggest using the name of the application followed by "AppStore" so that you can know that this is the profile of the store.
  • App ID: Select the game App ID you created in the previous step.

Image

图 11-2。 创建分发配置文件

单击提交按钮以生成分布配置文件。如果状态仍然是待定,您可能需要在 web 浏览器上点击刷新。应该需要几秒到两分钟。

点击图 11-3 中所示的下载按钮,将发行版概要文件下载到您的计算机上。

Image

图 11-3。 您新创建的分布配置文件

接下来,需要通过双击或打开 Xcode 并将其拖到管理器中来安装配置文件。它会自动从 Xcode 打开管理器工具,如图图 11-4 。

Image

图 11-4。 管理器中的配置文件视图

在 iTunes Connect 上创建游戏

在使用新创建的分发描述文件开始发布过程之前,您需要在 iTunes Connect 上创建游戏。这将使你能够激活游戏中心,iAD,或 iApp,如果你在游戏中使用这些功能。

第一步:登录 iTunes Connect

itunesconnect.apple.com连接到 iTunes Connect。点击图 11-5 中所示的管理您的应用链接。

Image

图 11-5。 在 iTunes Connect 中管理您的应用

第二步:创建新应用

点击图 11-6 所示的添加新应用按钮。

Image

图 11-6。 添加新 app

第三步:提供基本信息

接下来,您需要根据图 11-7 提供以下信息:

  • Default language of your application: This is the default language of your game.
  • App name: the name of your game.
  • SKU number: This is a tracking number. It is used to track the unique version of their software internally. I suggest the date in YYYYMMDD format, but you can use any random number.
  • Bundle ID: Select the application ID you created earlier.

Image

图 11-7。 游戏名称

第四步:发布日期和定价信息

接下来,您需要根据图 11-8 提供目标发布日期和定价信息。

  • Release date: Remember, if you choose a date before you get approval from the store, your game will be released on the day you get approval.
  • Level: There are many different pricing strategies. Remember, Apple keeps 30% of every sales.
  • Educational institution discount: indicates whether you are willing to offer discounts to educational institutions if they buy a lot of your games.
  • Customize B2B App: See if you have developed a game for a company for your own use.

Image

图 11-8。 发布日期和定价信息

步骤 5:提供版本和类别信息

接下来你需要按照图 11-9 提供游戏的信息。

版本号:我推荐使用像 major.minor.maintenance 这样的约定,维护只是为了修正 bug,minor 是为了次要的特性,major 是为了游戏中的重大变化。* Copyright: Put your copyright information here.* Primary category: Choose the game or any other suitable category according to your development purpose. Select two subcategories (only if you select the game as the category).* Category II: This is optional. However, it is recommended to reach more audiences.* Note for review: If you want to give specific guidance to the reviewer.

Image

图 11-9。 版本信息

第 6 步:定义您的申请评级

下一个屏幕是您的应用的评级。根据图 11-10 ,这些问题是不言自明的。

Image

图 11-10。 游戏评分

步骤 7:提供元数据信息

然后你按照图 11-11 提供游戏的元数据。

  • Description: Put on the salesman's uniform and play at the pitch you are best at. I suggest you prepare in advance.
  • Keywords: keywords are very important because they will be searched in the app store. You can use Google keywords to optimize your keyword selection.
  • E-mail: used to contact you.
  • Support URL: You need to provide a website for game support (your own website or your blog page). Marketing URL: This is optional, but having one is a good idea.
  • Privacy policy URL: also optional.

Image

图 11-11。 元数据

第八步:阅读并接受 EULA 协议

现在你需要阅读并接受默认的最终用户许可协议(EULA)或者提供你自己的,如图图 11-12 所示。

Image

图 11-12。 最终用户许可协议

第九步:提供游戏作品

最后,你需要上传你的作品(图 11-13 )。您必须提供:

  • ITunes 512 × 512 icon art: 72 dpi and I recommend png format.
  • Up to five screenshots of iPhone or iPad.

Image

图 11-13。 上传你的作品

一旦您提供了上述所有信息,您将被引导至一个摘要页面(图 11-14 )。

Image

图 11-14。 新申请汇总

在这一阶段,您的新应用处于准备上传状态。

您现在可以为您的游戏启用游戏中心和 iAd。

为你的应用启用游戏中心

如果您在游戏中使用 Game Center,您需要启用 Game Center 以获取完成游戏配置所需的信息。在“新建应用摘要”页面中,单击“管理 Game Center”按钮。您将被引导至一个页面,按照图 11-15 中的启用 Game Centre。单击启用按钮。

Image

图 11-15。 启用游戏中心

一旦您点击了“启用”按钮,页面将会根据图 11-16 更新,显示设置排行榜和成就的选项。

Image

图 11-16。 排行榜和成绩设置页面

游戏沙拉只支持排行榜。成就已在路线图上,但在撰写本文时尚未交付。

点按排行榜部分的“设置”按钮。您将按照图 11-17 进入排行榜管理页面。

Image

图 11-17。 排行榜管理页面

点按“添加排行榜”按钮来创建新的排行榜。首先,根据图 11-18 中的,你需要在单排行榜或组合排行榜之间做出选择。

Image

图 11-18。 单项或综合排行榜

选择单排行榜。组合排行榜就是几个单一排行榜的简单组合。

接下来,您需要为您的排行榜提供以下信息(图 11-19 ):

  • Reference name of leaderboard: This is your leaderboard name (highest score, fastest race, etc. ). Although this is an internal name, it should be clear. This will make your future life easier.
  • ID: This is a key point, because you need to apply this number to the GameSalad Creator of the game. The ID consists of alphanumeric characters.
  • Fraction format type: integer, time, etc.
  • Order: from low to high or from high to low.
  • Range: Only the scores within the range are displayed. This is optional.
  • Localization: You need to add at least one language to your leaderboard. According to Figure 11-20 , click the Add Language button to provide the name to be displayed on the leaderboard, the format of the score, the words (singular and plural) after the score and the image (optional).

Image

图 11-19。 新排行榜

Image

图 11-20。 排行榜本地化

启用 iAd

如果您正在使用 iAd,您还需要在 iTunes Connect 中为您的游戏启用它。在你的游戏总览页面(图 11-14 ,你需要点击启用 iAd 网络选项。

根据图 11-21 显示启用 iAd 页面。

Image

图 11-21。 启用 iAd

只需点击启用 iAd 和保存按钮。

您现在已经在 iTunes Connect 中设置好了。下一步是准备要上传的二进制文件。

更新 GameSalad 中的游戏中心

在 GameSalad Creator 中打开您的游戏。

根据图 11-22 和 11-23 ,对于您在游戏中使用 GameCenter 的每个动作,您都需要更新帖子得分,并使用您刚刚创建的适当排行榜 ID 显示排行榜行为。

Image

图 11-22。 显示排行榜行为

Image

图 11-23。 帖子评分行为

在 GameSalad 内部发布游戏

现在您需要创建二进制文件来上传到 iTunes store。这一步在 GameSalad Creator 中被称为发布。在此步骤中,您的游戏将使用适当的证书和预置描述文件进行签名,您可以将它发送到 Apple。

第一步:选择目标平台

打开您要发布的游戏,在 GameSalad Creator 中单击发布按钮。

下面的屏幕会询问你想在哪个平台上发布你的游戏(图 11-24 )。选择合适的平台。

Image

图 11-24。选择目标平台

第 2 步:提供概述信息

下一步是根据图 11-25 提供关于你的游戏的概述信息。

Image

图 11-25。 信息概述

您需要提供:

  • Category: Most of the time, you should choose games, but you have already seen that you may do things other than games in GameSalad.
  • Sub-category: Select two sub-categories in your main category according to your game type (game category only).
  • Category 2: Select the second category in which your game will appear.
  • Icon: Upload game icon (512 × 512)
  • Language: Choose the language of your game.
  • Title: This is the name of your game.
  • Description: Provide a description of your game.
  • Keywords: Provide a set of keywords for your game, separated by commas.
  • Copyright information: provide your copyright information here.

当您在 iTunes Connect 中创建游戏时,已经提供了许多此类信息。让它匹配!

步骤 3:选择您的预配配置文件

下一个屏幕要求您选择您的配置文件。您必须选择您为在 App Store 上分发而创建的描述文件。你还会被要求输入游戏的显示名称和版本。

注意:GameSalad 中的版本必须与您在 iTunes Connect 中输入的版本相匹配。

注意这个屏幕上的高级选项。它们允许您根据图 11-26 自定义方向以及闪屏(针对专业会员)。

Image

图 11-26。高级平台设置

闪屏必须与目标设备的分辨率一样大。您还将有机会选择 armv7 或启用光泽应用图标。

关于 armv7:

Armv7 是处理器指令集标准。它从 iPhone 3GS,iPad 1 st Gen,iPod Touch 3 rd Gen,以及所有后续世代都在使用。如果您选中 armv7,您的游戏将只能在支持 armv7 的设备上运行。

第四步:提供一个宣传 YouTube 视频的链接

这一步是可选的,您可以在 YouTube 上提供一个推广视频的链接。

第五步:上传你的截图

这一步要求你按照图 11-27 上传最多五张游戏截图。

Image

图 11-27。 截图

第 6 步:阅读并接受协议

接下来,您可以查看刚刚提供的所有信息。当您对数据感到满意时,单击发布。

按照图 11-28 阅读并接受 GameSalad 提交条款和协议。

Image

图 11-28。 GameSalad 提交条款和协议

一旦您同意,您的游戏将开始上传到 GameSalad 服务器。过了一会儿(取决于你的游戏大小),你会被要求在你的电脑上保存你的签名二进制文件。最后一个屏幕将确认你已经成功地在 GameSalad 中发布了你的游戏,这意味着你已经收到了你的二进制文件(图 11-29 )。

Image

图 11-29。可喜可贺

第七步:压缩你的文件

最后一步是通过右键单击并选择 compress 来压缩您刚刚收到的文件。你现在可以上传游戏了。

将游戏上传到 iTunes

返回 iTunes Connect 并在“管理您的应用”部分选择您的游戏。摘要页面应类似于图 11-30 中的页面,状态为准备上传。

Image

图 11-30。准备上传状态

单击准备上传按钮。您将被引导至图 11-31 中的出口合规页面。

Image

图 11-31。 出口合规

下一个屏幕指示在哪里可以找到将用于上传游戏的应用加载器。您将在以下路径找到应用加载器:/Developer/Application/Utilities/Application Loader.app

打开应用加载器。如果这是您第一次使用它,您将被要求按照图 11-32 接受软件许可协议。

Image

图 11-32。 应用加载器软件许可协议

接下来,你需要提供你的开发者苹果 ID 和密码,因为应用加载器将使用它们来连接到你的帐户并上传你的游戏。

在应用加载器主屏幕中,根据图 11-33 选择交付您的应用。

Image

图 11-33。 应用加载器主屏幕

接下来,通过单击“选择您的应用”来选择您的应用单击下一步。然后,按照图 11-34 点击选择按钮,选择要上传的二进制文件。

Image

图 11-34。 上传前的 App 信息

将会打开一个文件浏览窗口。选择要上传的二进制文件,并单击发送进行确认。您可以按照图 11-35 在屏幕上跟踪上传的进度。

Image

图 11-35。 上传你的文件

上传完成后,将出现一个感谢屏幕。您可以关闭窗口和应用加载器。

根据图 11-36 中的,你的游戏状态将变为上传已收到。

Image

图 11-36。 上传收到状态

过不了多久,你的游戏状态会自动更新为等待审核(图 11-37 )。

Image

图 11-37。 等待审查状态

等待,等待,等待

现在你要等…等…等苹果审核你的申请。在这个阶段,你在游戏提交上已经无能为力了。我建议你计划在其他项目或游戏推广上工作,如果还没有做的话。

一旦苹果团队开始审查你的游戏,你会收到一封电子邮件通知(图 11-38 ),你的压力水平会增加,因为你知道你会在几个小时内得到你的批准/拒绝。

Image

图 11-38。 处于审核状态的电子邮件通知

在撰写本文时,审查大约需要三到四天,但它会根据添加的新应用的数量而变化。

万一被拒绝了怎么办?不要气馁。这种情况经常发生,尤其是你的第一场比赛。苹果公司将向您提供拒绝的原因。让他们的反馈引导你改进你的游戏,然后重新提交。如果您不理解反馈,可以联系他们,他们会为您提供更多见解。

我的第一个应用被拒绝了三次,我才把它做对!

你的游戏已准备出售

恭喜你!!!!您收到了一封电子邮件,表明您的应用现在可以出售了(图 11-39 )。

Image

图 11-39。 待售状态通知

祝你销售好运!

总结

我希望你的游戏现在卖得很快!在本章中,您学习了如何:

  • Create your AppID and your distribution preset profile.
  • Create your game description on iTunes Connect.
  • Publish your game in GameSalad.
  • Upload your game to Apple.

仍然认为你的销售数字太低?然后跳到下一章,在那里你将快速了解促销策略。

十二、游戏推广入门

本章的目的不是为你提供一个完整详尽的游戏营销课程,而是对一些重要概念的快速介绍,这些概念可能会帮助你提高销售额。

你开发了一个很棒的游戏,你想让人们知道它。更重要的是,你希望人们购买它!所以你必须告诉全世界,但是到处喊“我有最好的游戏”是不够的!

在进入运营策略之前,你需要做一点内省的准备:谁是你的潜在客户?你的竞争对手是谁?你的游戏有什么独特之处?

在本章中,我将介绍:

  • Define your target customers.
  • Investigate your competitors.
  • A draft definition of your unique value.
  • Basic operational strategies such as press releases and their release.
  • Get comments from influencers.
  • Promote your game with Facebook.

前期开发阶段

事实上,准备阶段是高效促销最重要的任务。通过精心制作合适的信息,你可以大大提高你的下载率。准备阶段主要由三个调查领域组成:你的目标客户、你的竞争对手和你独特的价值主张。

定义你的目标客户

为了向你的潜在客户传达相关信息,你需要研究他们。你可以花费数年时间研究社会心理学,深入了解顾客购买行为,但这不是本书的目的。相反,我将为您提供几个问题,帮助您确定潜在目标。

第一步是确定你的目标客户是否在 App Store 购买游戏。如果他们没有,你需要问自己为什么。你最终可能会得出这样的结论:他们不在 App Store 买游戏,是因为他们不用 iOS 设备。或者他们无权进行购买(未成年人、小孩、由另一个成年人管理的人)。在这种情况下,您需要对玩家和购买者这两个群体进行资格审查。

人口分布图

要确定人员资格,您需要提供以下人员信息:

  • age
  • gender
  • income
  • academic degree
  • marital status
  • geographical position
  • occupation

让我们用插图练习一下。让我们假设你打算创建一个面向美国的幼儿园游戏。让我们在表 12-1 中填入适当的信息。

请记住,剖析的目的不是详尽无遗,而是以最少的努力锁定 80%的潜在客户。

信息来源

下一步是确定你的目标受众从哪里收集信息来做出购买决定。一旦确定了这些信息来源,你就可以通过它们来交流你的游戏。例如,关于父母身份的网上论坛是父母的重要信息来源。在谷歌上搜索“蹒跚学步的父母美国论坛”会给你提供一个论坛列表,你可以在那里谈论你的游戏。此外,还有一些网站涵盖了幼儿应用。识别他们并让他们评论你的游戏会给你带来很大的曝光率。

了解购买决策

确定目标客户的最后一步是确定潜在客户对你的游戏类型做出购买决定的方式。购买决策会是冲动的、经过分析的、参考的还是受影响的?同样,获取这些信息对于您定义信息内容的方式至关重要。

在这个例子中,父母让其他父母推荐应用至关重要。所以你的操作策略是从其他家长那里获得积极的推荐,然后把这些推荐传达出去。如何获得积极的推荐?一种方法是分发免费下载代码,作为回答调查的交换,然后创建一个可靠的审查者数据库。

识别并确定您的竞争对手

对于 iOS 游戏来说,定位你的竞争对手既容易又棘手。找到你要竞争的游戏就像找到应用商店一样简单。但由于商店中有超过 50 万个应用,找到你将与之争夺市场份额的游戏可能会很棘手。

可以使用 iTunes 的搜索功能(如图图 12-1 所示)。

Image

图 12-1。 在 iTunes 中搜索“幼儿园”的结果

另一种方法是使用谷歌搜索 iPhone、iOS 或 iPad 等关键词。然后你就可以利用谷歌的所有力量来得到结果。搜索“幼儿园 ios 游戏”的结果如图图 12-2 所示。

Image

图 12-2。 谷歌“幼儿园 ios 游戏”结果

一旦您确定了潜在竞争对手的列表,创建一个表格,每行一个竞争对手,并将表 12-2 中显示的信息作为列。

您可以使用位于 Chapter12_Files 文件夹中名为Competitive Review template.xls的 Excel 模板。

创造您独特的价值主张

最后一步是创造你独特的价值主张。这是你的客户会购买你的游戏的主要原因。顾客购买你的游戏的主要原因是你的游戏以特定的价格提供的娱乐价值、教育价值和上瘾价值。通过列出这些功能的特点和优势,您将在这三个类别中创造价值,这将产生您独特的价值主张。

寻找完美的名字

由于名称是商店中最重要的搜索标准之一,您应该花相对较长的时间来查找正确的名称。它需要足够的描述性,以便当潜在买家寻找游戏时,你的游戏有一个很好的匹配。

在选择名字时要进行的检查中,你需要确保在你所针对的另一个国家或文化中没有冒犯的意思。此外,你必须尊重版权和商标规则。一个好的建议是用你可能想用的名字进行谷歌搜索。

最后但并非最不重要的是,你可能想检查哪些域名与游戏名称有关。图 12-3 显示了对“幼儿园”进行域检查的结果

Image

图 12-3。 【幼儿园】上的域名勾选

制作你的图标

你的偶像是你的朋友!你的偶像是你最好的盟友。执行搜索的潜在目标客户会在 App Store 搜索结果页面上看到两样东西:你的标题和你的图标。

因此,你的图标是非常重要的。你必须花必要的时间来正确设计你的图标。它必须具有吸引人的视觉描述。

表 12-3 显示了图标尺寸的各种要求。

以下是 Apple 开发者文档中关于游戏图标的链接:

[developer.apple.com/library/ios/#documentation/userexperience/conceptual/mobilehig/Iconsimg/IconsImages.html](http://developer.apple.com/library/ios/#documentation/userexperience/conceptual/mobilehig/Iconsimg/IconsImages.html)

此外,以下是 Apple 开发人员关于图标指南的文档链接:

http://developer.apple.com/library/ios/#documentation/userexperience/conceptual/mobilehig/Iconsimg/IconsImages.html#//apple_ref/doc/uid/TP40006556-CH14-SW2

编写应用商店描述

App Store 中对你游戏的描述需要遵循一些黄金法则。让我们面对现实:大多数潜在买家只会阅读第一行,然后跳转到屏幕截图。在这一点上,有三种可能:他们买了它,他们走了,或者他们进一步阅读以下定决心。我不确定第三种选择会是最常见的。这是什么意思?这意味着你需要把你的关键信息放在你描述的顶部。

此外,你的内容不应该是一成不变的。例如,如果你决定进行新学年的销售,那么在销售的有限时间内在顶部做广告。

以下是我对游戏描述的黄金法则:

  • State positive feedback from customers or recognized reviewers.
  • Be direct and brief in your game description.
  • Explain why players will have fun playing your game.
  • Be simple, direct and honest.
  • When a new version is released, it contains a new content section.
  • List your main features and advantages, and highlight the unique features and advantages of your game.

不废话,只说要点!

作战战术

本节重点介绍一些你可能想要使用的工具,以使你的游戏在外界有一定的知名度,如新闻发布、产品网页、游戏评论和脸书网页。

撰写新闻稿

新闻稿是向媒体发布的官方声明。这是一种正式的沟通和通知新闻机构(新闻、电视、互联网新闻网站)的方式。

您有几次机会发布关于游戏推广的新闻稿:

  • Your new game announcement.
  • Make major updates to your game to provide more value to customers.
  • Your game has reached a considerable download volume. Your game has won all kinds of recognition: awards, monthly games, best game reviews, and special recommendations from the app store.

写一篇好的新闻稿很难,因为它需要很好的书面沟通技巧。对于有能力的人,我强烈建议聘请专业文案。自由撰稿人可能要花你几百美元。谷歌搜索会返回大量可供选择的联系人。基于你已经做的市场调查,他/她将能够写一份非常有力的新闻稿,然后你将广播。

如果您选择(或者别无选择)自己编写,您需要遵循公认的格式化结构:

  • Title
  • Abstract (the title is explicit and optional)
  • main body
  • Contact information

在今天的数字通信时代,你将通过电子方式发布你的新闻稿。利用这种分发模式来包含游戏视频的链接。一个好的 30 秒视频会说服人们尝试这个游戏。

要分发您的新闻稿,您可以将它直接发送到您根据市场调查创建的关键联系人数据库。或者,你可能想使用一些互联网服务,将你的新闻稿分发给媒体。有些人可能免费做这件事;其他一些可能需要付费。以下是此类服务的几个名称:

  • pr MAC(??)
  • )pr web( [www.prweb.com](http://www.prweb.com)
  • 获取 2 按([www.get2press.sg](http://www.get2press.sg))

创建网页

创建一个简单的产品网页也是一个既好又便宜的促销工具。您可以很容易地找到一些服务来托管您的页面,以及从图形界面设计您的页面的工具。

就我个人而言,我使用 WordPress 网站,它的托管费是每年几美元。然后我为每场比赛贡献一个网页。为了传达有效的信息,以下是一些简单的指导原则:

  • Keep it clean and concise.

  • Describe your game quickly. Use an icon on the homepage and write down your game name in capital letters to make the graphical interface look better. Make use of all possible media: videos, picture libraries, etc.

  • Forward the content of your App Store page and add additional parts, such as Q&As, tips and user guides.

  • Because the purpose is to sell your game, make sure there is a buy button that can be easily seen and linked to the app store page of your game.

让你的游戏在应用点评网站上获得点评

强有力的购买促成因素是推荐。这就是为什么你的游戏获得知名应用评论网站的评论是至关重要的。

一个好的方法是给他们发送一个个性化的信息,并附上游戏的免费下载代码和新闻稿。

以下是我使用的几个网站:

  • [www.148apps.com](http://www.148apps.com)
  • [www.slidetoplay.com](http://www.slidetoplay.com)
  • [www.appspy.com](http://www.appspy.com)
  • [toucharcade.com](http://toucharcade.com)
  • [www.metacritic.com/games/ios](http://www.metacritic.com/games/ios)

此外,这个页面([maniacdev.com/2011/08/ios-app-review-sites/](http://maniacdev.com/2011/08/ios-app-review-sites/))列出了 116 个审查应用的网站。

创建脸书页面

尽管社交网络不仅限于脸书,但让我们面对现实吧:脸书是一个强大的工具。

有了脸书帐户,你可以创建脸书网页。脸书页面是一个很好的社区交流工具。您可以使用为 App Store 准备的描述来描述您的游戏。要创建一个脸书页面,进入[www.facebook.com/FacebookPages](http://www.facebook.com/FacebookPages) ( 图 12-4 )。

Image

图 12-4。 Facebook 页面

单击页面右上角的“创建页面”按钮(您必须登录才能创建页面)。选择以下选项之一:

  • Local enterprises or places
  • Company, organization or institution
  • Brand or product
  • Artists, bands or public figures
  • amusement
  • Career or community

iOS 设备的游戏归入“品牌或产品”。然后,选择名为“应用”的类别键入游戏的名称。阅读脸书网页条款([www.facebook.com/page_guidelines.php](http://www.facebook.com/page_guidelines.php)),并勾选复选框表示您接受这些条款。最后,点击图 12-5 中所示的“开始”按钮。

Image

图 12-5。 为 iOS 幼儿园创建脸书页面

您可以提供一张个人资料图片,如图图 12-6 所示。使用您为 App Store 页面准备的图标。

Image

图 12-6。 上传个人资料图片

接下来是对你游戏的描述(图 12-7 )。同样,使用你为应用商店描述所做的工作。

Image

图 12-7。 提供关于你游戏的信息

页面创建的最后一步是选择页面的网址。如果会是类似[www.facebook.com/yourpage](http://www.facebook.com/yourpage)的东西,如图图 12-8 所示。

Image

图 12-8。 设置你的网址

您的页面已创建!你将被自动引导到页面的管理区,如图 12-9 所示。

Image

图 12-9。 你的脸书页面管理面板

使用此页面创建游戏社区,并使用它与社区进行交流。一旦人们“喜欢”这个页面,他们就会在他们的新闻订阅中收到你页面上的任何帖子。

总结

游戏推广介绍到此结束。这是营销概念的一个非常基本的方法。如果你想探索更多关于游戏营销和推广的知识,我推荐戴夫·伍尔德里奇和迈克尔·施耐德的《iPhone 和 iPad 应用开发业务》。

在本章中,您学习了如何:

  • Define your target customers.
  • Study your competitors.
  • Draw up your unique value definition.
  • Write a press release and distribute it.
  • Approaching the app review website.
  • Create a Facebook page.

第一部分:学习 GameSalad 基础知识

第二部分:让我们用 GameSalad 中的高级功能和效果来为沙拉增添情趣吧

第三部分:为应用商店做准备:润色、发布和推广你的游戏

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/783257.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

问题 IDEA创建Sping项目只能勾选17和21,却无法使用Java8

想创建一个springboot项目,本地安装jdk版本为1.8,但是在使用 Spring Initializr创建项目时,版本只能选择21或17 在JDK为1.8的情况下,无论选择Java17版本或者21版本时,都会报错。 Java17和Java 8(JDK1.8)的区别 版本号:Java 17 是 Java SE 17 的版本,而 JDK 1.8 是 Java S…

软件逆向之OD

OD全称OllyDbg ,是一种具有可视化界面的 32 位汇编-分析调试器。和IDA不同之处在于可以动态调试软件功能,可以有效的去分析程序构成。 以下软件讲解均以吾爱破解中的OD进行讲解。软件下载 打开程序主页面我们可以看到以下内容首先介绍一下软件主页面的4个窗口: 反汇编窗口:…

vue随笔

插值语法中可以使用三元表达式

Halcon颜色识别

本文接扫halcon识别排序颜色,复杂点在于无法使用单一图像区域识别出5中颜色。这里用到了ImageR 和 ImageS*颜色识别*定义颜色类型 FushColor := [black,brown,red,pink,yellow]*颜色对应灰度值 HueRange := [10,51,68,100,145,191,\0,10,30,50]*定义获取到的坐标,展示颜色 Ad…

Deno-入门指南-全-

Deno 入门指南(全)原文:Introducing Deno 协议:CC BY-NC-SA 4.0一、为什么是 Deno? 在过去的 10 年里,当后端开发人员听到“后端的 JavaScript”这个词时,所有人都会立即想到 Node.js。 在这 10 年的开始,也许不会马上出现,但最终它的名字为每个人所知,成为另一种基于…

CSS-框架替代指南-全-

CSS 框架替代指南(全)原文:CSS Framework Alternatives 协议:CC BY-NC-SA 4.0一、为直观的网页设计选择轻量级框架 什么是框架? A framework is a premeditated set of concepts, modules, and standardized criteria that make the task of developing web sites and web…

dicom 字符集的选择

查看字符集读取标签 特定字符集(0008,0005)字符集unicode是字符集,ASCII、GB2312、GBK、GB18030既是字符集也是编码方式,UTF-8只是编码方式 通过字符集中文字符集字符集的选择 不同厂商实现不同 修改导致不可读[ISO / IEC 10646]现在禁止使用除UTF-8的最小长度编码以外的…

日出日落

日出日路,跟日期,经纬度有关,满足以一年为周期,正弦余弦函数.见下图: 在PHP 中date_sunrise和date_sunset函数分别获取日出日落.date_sunrise(strtotime(日期),SUNFUNCS_RET_STRING,$latitude,$longitude,$zenith,$gmtoffset); date_sunset(strtotime(日期),SUNFUNCS_RET_STRIN…

关于小程序使用OCR进行身份证识别

1.第三方插件安装 2.搜索并安装 3.购买免费次数1天100次 https://fuwu.weixin.qq.com/service/detail/000ce4cec24ca026d37900ed551415 4.选中使用的账号 5.支付完成愉快使用 6.正式使用 文档位置:https://mp.weixin.qq.com/wxopen/plugindevdoc?appid=wx4418e3e031e551b…

C 提高篇 c运行库、c标准库、windows API的区别和联系

C运行时库函数C运行时库函数是指C语言本身支持的一些基本函数,通常是汇编直接实现的。 API函数API函数是操作系统为方便用户设计应用程序而提供的实现特定功能的函数,API函数也是C语言的函数实现的。区别他们之间区别是:API函数是针对操作系统的,C语言运行时函数则是针对C…

本地通过python运行AI大语言模型LLaMa2

什么是Llama2 Llama 全称 large language model, Meta AI 公司2023年发布的开源AI大型语言模型,参数7B~65B。最新版本为Llama 3。 更为详细的介绍可参考,LLaMA - 维基百科,自由的百科全书 (wikipedia.org) 。 什么是llama.cpp? 一个开源c++库,用c++重写了LLaMa的推理代码…

Python一些提高效率的类库和装饰器用法

本文主要是慢慢积累Python中一些能提高效率的类库和装饰器,闲话少说,开始进入主题。 装饰器 装饰器是一种设计模式,用于修改或增强函数、方法或类的行为,而不需要改变其本身的代码。Python中的装饰器通常用@符号和函数来实现。# 自己编写的装饰器 def my_decorator(func):d…