ToB企服应用市场:ToB评测及商务社交产业平台

标题: GameSalad IOS 游戏开发学习手册(二) [打印本页]

作者: 老婆出轨    时间: 2024-9-8 13:20
标题: GameSalad IOS 游戏开发学习手册(二)
原文:Learn GameSalad for iOS Game Development for iPhone, iPad, and HTML5
  协议:CC BY-NC-SA 4.0
  六、学习重力、基础物理和相机控制:类似愤怒的小鸟的游戏,第一部分

除非你在荒岛上呆了两年,否则你肯定听说过《愤怒的小鸟》。《愤怒的小鸟》是游戏开发者中最成功的故事之一。这种小而简朴,但非常容易上瘾的游戏是一种世界性的现象。《愤怒的小鸟》于 2009 年初次在 iOS 上发布,在多个平台上的下载量已超过 3 亿次,每天的游戏时间超过 100 万小时。
在接下来的两章中,我将介绍 GameSalad 中类似游戏的开发。接下来就要靠你用 GameSalad 筹划的游戏来探求下一个愤怒的小鸟的成功了。
如果不熟悉游戏玩法,可以从 App Store 下载免费版的《愤怒的小鸟》。大概,你可以在火狐欣赏器或脸书上玩。
如上所述,游戏很简朴,但却很有用率。使用弹弓,你把鸟扔向场景另一边的猪。目标是消灭所有的猪。
由于接下来两章的目标是介绍游戏的基本机制,我将不使用任何图像元素。我会坚持游戏中的基本形状。
在本章中,您将学习:
   
  打造弹弓:弹性和回弹力

制作弹弓是你游戏的关键之一。在如许做的时间,你会学到一些新的函数,好比 magnitude 和 vectorToAngle。
解剖弹弓

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

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

图 6-2 。用弹弓扔弹丸
你无法想象我小时间射过多少个金属罐。我住在一个漂亮的农村地区,弹弓比赛在年轻男孩中很常见。我们没有用鸟做投射物,我们也没有向动物射击…但是我们可能有过反复打斗。我还更换了我家附近的几扇玻璃窗。
回忆够多了!现在就来玩一把数码弹弓吧。我将向你展示 GameSalad 中弹弓的基本组件。
创建项目文件

在 GameSalad 中创建新项目,并将文件另存为“CanonShowPartI.gameproj”你称之为“CanonShow”是由于在游戏范畴,本章中使用的所有概念都被称为经典物理学。
在项目信息选项卡中,使用表 6-1 中的信息。
制作弹弓框架

弹弓框架将由三部分组成:一只脚和两只手臂。为了简朴起见,您将只使用一个简朴的白色角色,并更改该角色实例的形状和旋转。您将直接在场景中修改实例。
在场景编辑器中打开新项目标初始场景。在演员编辑器中创建一个新演员,并将其命名为“弹弓组件”不应更改执行元属性。
把演员拖到现场。通过单击场景中的演员来选择实例。演员内部会出现一个带圆圈的框架。单击该帧以更改演员的形状。大概,双击该实例并更改 actor 实例的巨细。将形状修改为垂直矩形(宽度:24,高度:100)。根据图 6-3 将演员放置在地面上。

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

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

图 6-5。 定位弹弓的左框架
你有弹弓的底座。你现在将专注于创建撤回力量。
创建撤回力量

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

图 6-6。?? 区块的回撤地区
一个圆将定义这个地区。圆的半径将是拉回力的最大值。您将使用一个游戏属性来存储这个最大值;命名为“MaxPower”
在构建这个回调之前,我们先来看看 GameSalad 的两个新功能:magnitude 和 vectorToAngle。
量值函数

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

图 6-7。 两个演员之间的间隔
你将使用 magnitude 来计算从块的原点到块的当前位置的间隔,同时拉回。
向量角函数

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

图 6-8。 vectorToAngle 函数
使用弹弓的巨细和矢量角度

图 6-9 表现了怎样使用 magnitude 和 vectorToAngle 函数。

图 6-9。 使用幅度和矢量角度功能
用你的手指,你会碰到抛射体,把它拉返来。当触摸被释放时,您将使用方向的变化速率(取决于 vectorToAngle 值)和速率(取决于幅度)。
当触摸被按下时使用鼠标位置,你将约束投射物的位置。但是你不盼望抛射体在图 6-6 中的圆圈之外。
制造抛射体

在场景编辑器中,创建一个新的演员,并将其命名为“弹丸”根据表 6-2 更改演员的属性。
这个小红演员会被弹弓扔出去。
存储初始位置

为了存储抛射体的初始位置,您将使用两个游戏属性。使用游戏属性而不是演员属性的缘故原由是由于你将需要从其他演员(随后的投射物)访问这个初始位置。
返回场景编辑器,创建两个名为“InitialProjectileX”和“InitialProjectileY”的真实游戏属性
使用“更改属性”举动将抛射体的初始位置存储在刚刚创建的两个属性中。在演员编辑器中打开弹丸演员;拖放一个改变属性举动和改变游戏。InitialProjectileX 到弹丸。位置 X 如图图 6-10 所示。

图 6-10。 改变 InitialProjectX 的属性
将第二个更改属性举动(或复制前一个举动)拖放到抛射体角色并更改游戏。InitialProjectileY 到 propellet . position . y
余弦和正弦

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

图 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 ,
   
  将约束属性拖放到规则中,然后更改投射体。位置。Y 到游戏。initial project+min(游戏。MaxPower,量级(游戏。鼠标.位置. X - game。InitialProjectX,游戏。游戏。initial project)* sin(vectorToAngle(游戏。鼠标.位置. X - game。InitialProjectX,游戏。游戏。InitialProjectY))。
回到图 6-11 ,
   
  该规则如图 6-12 所示。

图 6-12。 触摸法则
返回场景编辑器。在场景中拖放抛射体,并将其放置在弹弓的两个臂之间。
点击预览按钮,玩弹丸。
投掷投射物

下一步是当你将手指从屏幕上移开时,能够投掷抛射体。功率将根据原点和拉回点之间的间隔来定义,方向将从 vectorToAngle 开始。
一旦释放触摸,您将使用“改变速率”举动来设定抛射体的方向和速率。
凭直觉,您可能会想到使用一个新规则,条件是“Actor receive event”“touch”是“released”当你保持在圆圈限定内时,这种方法是可以的,但如果你走出圆圈并释放触摸,它就不起作用了。相反,您将使用一个带有属性和现有打仗规则的小技巧。创建一个默以为假的布尔执行元属性。然后,一旦触摸被按下,将属性更改为 True。在打仗规则中,在其他部分添加一个子规则。子规则条件是属性为真。这将避免在按下 Touch 之前抛射体被抛出的可能性。
在演员编辑器中打开弹丸演员。创建一个布尔执行元属性,并将其命名为“HasBeenTouched”
在打仗规则中,在“约束属性”举动上方添加“更改属性”举动。如图 6-13 所示,Change 已经触摸到 true。

图 6-13。 改变已触摸属性
然后在“举动”窗口的顶部添加一个“更改属性”举动,以便在启动场景时将 HasBeenTouched 属性重置为 false。预备发射。已被修改为 false。
然后睁开规则的 Otherwise 部分,并在该部分添加一个新规则。将此子规则命名为“投掷”条件是“属性”抛射体。“HasBeenTouched”是“真的”然后将“改变速率”举动拖放到投掷规则中。将此举动的设置更改为
   
  该规则如图 6-14 所示。

图 6-14。 投掷法则
方向已设置为 180 + vectorToAngle(),由于 vectorToAngle 提供了从原点到拉回位置的方向。你想把抛射体往反方向扔,以是这就是你用“180 +”的缘故原由。
对于速率,使用倍增器来增加效果。我建议使用 10 个,但是你可以使用差别的值。
点击预览按钮来测试您的规则。
如安在 GameSalad 中模拟橡皮筋

在 GameSalad 中模拟橡皮筋是基于修改作为橡皮筋图形表示的 actor 的巨细。
您将在场景中看到同一个弹性演员的两个实例。它们中的每一个都会连接到弹弓的差别臂上。每个实例的举动会有所差别;因此,您将编辑场景中的实例。此外,您将需要访问场景实例的一些属性。
更改实例执行元名称

为了创建弹弓,您使用了一个名为“弹弓组件”的演员为了易于辨认实例,您将更改场景中实例的名称。
打开场景编辑器,双击弹弓的脚。这将在 Actor 编辑器中打开实例,如图图 6-15 所示。

图 6-15。 演员编辑弹弓之脚
在实例的属性中,将名称修改为“弹弓组件脚”
对弹弓的右臂重复相同的操作,并将其命名为“弹弓组件右”为弹弓的左臂再做一次,并将其命名为“左弹弓组件”
您执行此重命名操作是由于您需要从场景中的 elastic 实例访问这些实例的一些属性。
获取弹丸的及时位置

为了正确定位弹力带,你将需要访问抛射体的及时位置。使用游戏属性和约束属性举动很容易做到这一点。但是你只有在项目被抢的时间才需要这些信息。一旦抛射体被抛出,你不盼望你的松紧带跟着它。验证规则时,您将使用抛射体的触摸规则来约束位置;否则你会把松紧带带回原来的位置。
创建两个名为“ProjectileX”和“ProjectileY”的真实游戏属性
在演员编辑器中打开投射演员。将约束属性拖放到触摸规则和 changegame 中。ProjectileX 到 propeline . position . x .将另一个约束属性举动拖放到触摸规则中,改变游戏。ProjectileY to Projectile.Position.Y. These .这两种举动如图图 6-16 所示。

图 6-16。 约束抛射体的位置
这将确保在抓取投射物时,鸟的位置包罗在两个游戏属性 ProjectileX 和 ProjectileY 中。
接下来,当鸟没有被抓住时(触摸规则的 Otherwise 部分),将 ProjectileX 和 ProjectileY 属性的值更改为投射体的初始位置,该位置包罗在 InitialProjectileX 和 InitialProjectileY 中。
睁开触摸规则的“否则”部分,并将“更改属性”举动拖放到该部分中。改变游戏。ProjectileX 到 game.InitialProjectileX .拖拽另一个改变属性举动,改变游戏。这两个额外的举动表现在图 6-17 中。

图 6-17。 回到初始位置
现在您已经设置了属性 ProjectileX 和 ProjectileY。让我们花点时间在松紧带上。
弹性理论

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

图 6-18。 弹丸、弹弓和弹弓臂
对于松紧带,您将把它的宽度约束到投射体和弹弓右臂之间的间隔,给人一种长度在移动投射体时发生变化(弹性)的印象。位置 X3 是通过将 X2(抛射体)和 X1(臂)之间的间隔的一半加到 X2 而得到的。Y3 也一样,是把 Y2 和 Y1 的间隔的一半加到 Y2 上得到的。
为了最终确定效果,您将约束弹弓的旋转,使弹弓和弹弓臂之间的角度相同。在图 6-18 中可以看到,这两个角度是相当的。
以上我们都来做。
创造弹性演员

在场景编辑器中,创建一个名为“弹性”的新演员根据表 6-3 更改该演员的属性。
拖动弹性演员,将其放在场景中大约右臂的中央位置。重复相同的动作,但是将第二个实例放在左臂的中央附近,如图图 6-19 所示。

图 6-19。 现场弹性定位
现在让我们设置每个实例。
实现正确的弹性

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

图 6-20。 解锁演员的实例
拖放约束属性举动并更改弹性右移。位置。X 到游戏。ProjectileX +(当前场景。图层。配景。弹弓组件右。位置 X-游戏。ProjectileX)/2。
拖放约束属性举动并更改弹性右移。位置。Y 到游戏。ProjectileY +(当前场景。图层。配景。弹弓组件右。位置。Y-游戏。ProjectileY)/2。
拖放约束属性举动并更改弹性右移。巨细。宽度到数量级(当前场景。图层。配景。弹弓组件右。位置 X-游戏。ProjectileX,当前场景。图层。配景。弹弓组件右。位置。Y-游戏。ProjectileY)。
拖放一个约束属性举动并改变弹性权。旋转到 vectorToAngle(游戏。当前场景。图层。配景。弹弓组件右。位置。X,游戏。投影-当前场景。图层。配景。弹弓组件右。Position.Y)。
这些举动如图 6-21 所示。

图 6-21。 弹性正确举动
让我们对左边的松紧带做同样的处理。
实现左弹性

双击场景中左侧的弹性实例,在演员编辑器中将其打开。将实例角色重命名为“弹性左”点按锁图标。
拖放一个约束属性举动,并更改弹性左。位置。Xto 游戏。ProjectileX +(当前场景。图层。配景。弹弓组件左。位置 X-游戏。ProjectileX)/2。
拖放一个约束属性举动并向左更改弹性。位置。Y 到游戏。ProjectileY +(当前场景。图层。配景。弹弓组件左。位置。Y-游戏。ProjectileY)/2。
拖放一个约束属性举动,并更改弹性左。巨细。宽度到数量级(当前场景。图层。配景。弹弓组件左。位置 X-游戏。ProjectileX,当前场景。图层。配景。弹弓组件左。位置。Y-游戏。ProjectileY)。
拖放一个约束属性举动,并更改弹性左。旋转到 vectorToAngle(游戏。当前场景。图层。配景。弹弓组件左。位置。X,游戏。投影-当前场景。图层。配景。弹弓组件左。Position.Y)。
这些举动如图 6-22 所示。

图 6-22。 弹性左举动
点击预览按钮来玩抛射体。
您可以打开位于 Chapter6_Files 文件夹中的文件CanonShowPartI-step1.gameproj。
控制摄像机:在场景中滚动

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

在 GameSalad,只有一个摄像头。摄像机是视点,你看比赛的方式。游戏的可视地区在你的屏幕上,你将实现对相机的控制:向左、向右、向上和向下移动相机。
到目前为止,您已经制作了场景巨细即是屏幕巨细的项目。当您正在构建一个不需要滚动的项目时,这很好。然而,在这个游戏中,你盼望有一个更大的场景,其中可见的部分即是屏幕的巨细。
GameSalad 中相机的一个关键概念是一个演员在控制相机。您将使用名为“控制摄影机”的举动,并将其影响到一个演员。因此,当演员移动时,摄像机也跟着移动。
相机视图是屏幕,但是相机还有别的一个工具:相机地区。这个地区是控制摄像机的关键。只要演员在这个地区内移动,摄像机就不会移动;演员一走出这个地区,摄像机就会跟着走。
点击图 6-23 中所示的摄像头图标,进入摄像头地区。

图 6-23。 相机图标
这将激活相机模式并表现相机地区(拜见图 6-24 )。

图 6-24。 摄像机地区视野
控制摄像机的演员在撞上摄像机地区并随着演员移动摄像机之前,可以在中央黑色地区自由移动。
您可以使用手柄来减小或增大该地区。您也可以使用场景摄像机跟踪地区来编辑带有精确数字的值。
但是如果你的场景和你的屏幕一样大,那么移动相机又有什么意义呢?没有!为了使用相机,你需要有一个更大的场景。
实现滚动

让我们实现佳能秀的滚动。第一步是让场景的尺寸变大。
在场景编辑器中,点击场景选项卡,打开场景属性,如图图 6-25 所示。

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

图 6-26。 场景巨细
现在让我们给抛射体添加相机控制。
在演员编辑器中打开投射演员。将一个控制摄像机举动拖放到抛射体演员中,如图图 6-27 所示。

图 6-27。 控制摄像机
点击预览按钮来玩抛射体。
您可以打开位于 Chapter6_Files 文件夹中的文件CanonShowPartI-step2.gameproj。
飞行和坠落:重力概念

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

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

图 6-28。 引力的例证
关于苹果:
第一个苹果标志实际上是艾萨克·牛顿爵士坐在苹果树下,一个苹果落在他头上的形象。据说苹果这个名字是为了向牛顿爵士致敬。
飞行和拖曳

我个人不使用 GameSalad 重力功能。它位于场景属性中。您可以在 X 和 Y 上输入一个实数来模拟 X 和 Y 方向上的力。
由于重力是加速率,以是我更喜好使用加速举动。它提供了更多的灵活性,由于您可以通过规则触发它。想象一下有几个行星的太空场景,每个行星都有自己的引力…
实现 gravity 并将其拖动到您的项目中。阻力用于模拟空气对物体的摩擦。拖是演员的属性。
在演员编辑器中打开投射演员。睁开打仗规则的“否则”部分。然后,将加速举动拖放到投掷规则中。将设置更改为:
   
  这将模拟重力。
然后,将“更改属性”举动拖放到“加速”举动旁边。换弹丸。物理。拖到 100。图 6-29 表现了这两种举动。这种阻力将模拟空气摩擦。

图 6-29。 加速和拖拽
末了一步是放置一个配景,使投射物的活动更容易可视化。导入图像Background.png并创建一个名为“Background”的新演员拖动场景中的演员,右键单击演员将其发送到背面,然后调解配景巨细以覆盖整个场景。
点击预览按钮来玩抛射体。
您可以打开位于 Chapter6_Files 文件夹中的文件CanonShowPartI-step3.gameproj。
更多相机控制:飞行时放大/缩小

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

对于相机,有一组属性我还没有提到:相机尺寸。如前所述,摄像机的表现器是屏幕。以是你改变了摄像机的尺寸。很显着,你的物理屏幕是不会扩大的(苹果很神奇,但没那么神奇)。那么如果你增加屏幕的尺寸会发生什么呢?在相同的表现屏尺寸下,您可以覆盖更多内容。这将产生一种视觉效果,似乎摄像机正在进一步(缩小)以在表现器上表现更多内容。这正是你想要的效果。
相机属性是场景属性。如果您盼望举动修改它们,您需要能够访问场景属性。什么类型的演员可以访问场景属性?解锁的 actor 实例!
打开场景编辑器。双击场景中投射演员的实例。根据图 6-30 点击锁图标解锁实例。

图 6-30。 解锁弹丸实例
睁开 Touchrule 的“否则”部分。然后扩展投掷规则。将插值举动拖放到投掷规则中,如图 6-31 所示,将设置更改为:
   
  

图 6-31。 插补摄像机的宽度尺寸
你可以调解宽度和持续时间的值。我用 920 是由于我喜好 2 秒钟内数值翻倍的效果。我建议你四处探求你喜好的代价观。
将插值举动拖放到投掷规则中,并将设置更改为:
   
  点击预览按钮,实验这个新的效果。
放大

直观地说,你可以说,如果你缩小相机的尺寸,你会创造一个放大的效果。你完全正确!
为了在缩小后触发效果,添加一个 2 秒的计时器。在下一章中,您将更改时间以添加一个规则,该规则将在与目标打仗时触发放大。
将一个计时器举动拖放到抛射体 actor 实例的投掷规则中,并将设置更改为“2”秒后。
将这两个插值举动(拖移+Option 键)复制到计时器中。将刚刚复制的插值举动设置为宽度:460 和高度:320,如图图 6-32 所示。

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

要微调效果,有个小技巧。缩小跟踪地区会产生更好的效果。
打开场景编辑器并单击“场景”选项卡以表现场景属性。睁开相机属性,然后睁开跟踪地区属性。将宽度属性改为 200,高度属性改为 150,如图图 6-33 所示。

图 6-33。 缩小跟踪地区
点击预览按钮来玩抛射体。
您可以打开位于 Chapter6_Files 文件夹中的文件CanonShowPartI-step4.gameproj。
射弹管理:管理实验

本章的末了一步是实现每个场景的最大实验次数。你会在屏幕的左下方出现一些弹丸,每扔出一个弹丸,数量就会淘汰一个。
添加边界

在进入投射物管理之前,你需要在游戏地区周围定义一些墙。正如你可能已经留意到的,当你投掷抛射体时,它们会落下并进入场景之下,由于没有底层。您将在场景周围创建一些墙。抛射体将与墙壁碰撞。
打开场景编辑器,创建一个名为“墙”的新演员双击演员,在演员编辑器中打开它。在演员的属性中,将恢复值更改为 0,并取消选中可移动框。
回到场景编辑器。将墙壁角色的四个实例拖放到场景中。改变它们各自的形状,将它们放置在场景的四个边界上,如图图 6-34 所示。

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

图 6-35。 在墙壁上跳跃
点击预览来测试你的工作。
制造假射弹

管理各种射弹的一个非常酷的技巧是,实际上你只会使用一个射弹。您将创建假射弹,每次实验后,当主射弹被带回弹弓时,假射弹将一个接一个地消散。
假射弹将具有与射弹相同的外观。但是它们将只包罗一个规则和这个规则中的一个改变属性举动。
创建一个游戏属性来定义完成场景的剩余实验次数。我将这个实验次数设置为 4(你可以选择任何其他得当你的次数),以是你将需要三个假射弹。由于你在弹弓上有一个,它最初会在场景中表现四个投射物。每次实验后,游戏属性将淘汰一。虚拟抛射体中的规则将检查游戏属性与位置号的比较。如果游戏属性较低,你将使虚拟射弹不可见(颜色从 alpha 到 0)。魔法竣事了!
在场景编辑器中,创建一个新的整数类型的游戏属性,命名为“实验离开”,并设置其默认值为 4,如图图 6-36 所示。

图 6-36。 游戏属性实验离开
接下来,创建一个新的演员,并将其重命名为“虚拟弹丸”,并在演员编辑器中更改以下属性:
   
  接下来,用条件“属性”“游戏”创建一个新规则。图 6-37 。

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

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

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

图 6-40。 改装假射弹两枚
修改抛射体实例

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

在场景编辑器中,创建一个名为“改变抛射体”的新布尔游戏属性要检测抛射体何时停止移动,您将使用线速率活动属性。
通过双击场景中的演员来打开投射演员实例。在投掷规则中创建一个新规则,并将其命名为“更改抛射体”将以下条件添加到标准为“全部”的规则中
   
  然后,将一个更改属性举动拖放到规则和更改抛射体中。颜色α为 0。接下来,将一个更改属性举动拖放到相同的规则中,并更改游戏。将弹丸改为真。末了,将末了一个更改属性举动拖放到规则和更改游戏中。实验离开游戏。实验离开-1。该规则如图 6-41 中的所示。

图 6-41。 改变抛射体规则
移回原始位置

当属性改变投射物为真时,你将通过一个规则把投射物移回到它的原始位置。使用“插值”举动将其移回其原始位置,该位置存储在属性 InitialProjectileX 和 InitialProjectileY 中。
在 actor 实例中创建一个新规则,并将其命名为“Back to Position”规则的条件是“游戏属性”。改变弹丸" “为” "真。"将插值举动拖放到规则中,并将设置更改为:
   
  使用以下设置重复相同的操作:
   
  回位规则如图图 6-42 所示。

图 6-42。 回位规则
重置关键属性

接下来,您需要重置 HasBeenTouched 属性,使弹丸可见,并将 change 弹丸的状态更改为 false。
将“更改属性”举动拖放到“回到位置”规则和“更改抛射体”中。已被修改为 false。
将新规则拖放到“回到位置”规则中,将其命名为“属性重置”,并将以下条件添加到“全部”
   
  这将检测射弹是否回到其原始位置。
将更改属性举动拖放到属性重置规则和更改投射体中。颜色从α到 1。拖放第二个改变属性和改变游戏。将弹丸改为假的。属性重置规则如图 6-43 所示。

图 6-43。 属性重置规则
实验四次后重置游戏

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

图 6-44。 重置游戏规则
点击预览按钮来玩投射弹。
您可以打开位于 Chapter6_Files 文件夹中的文件CanonShowPartI-step5.gameproj。
总结

预备好向目标扔东西了吗?有了你全新的弹弓,你将能够进步你的对准技巧。
在本章中,您学习了怎样:
   
  七、创建游戏菜单和粒子效果:类似愤怒的小鸟的游戏,第二部分

在前一章中,你学习了怎样为一个类似愤怒的小鸟的游戏创建基础。但是你还有很多要学的。你需要一个目标来对准,需要格挡来掩护目标。这也是一个引入表的时机,表执行一些非常高级的优化。末了但同样重要的是,您将构建一个非常酷的菜单体系。
在本章中,您将:
   
  对准目标:摧毁街区

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

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

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

软块

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

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

使它们碰撞

您将使用一个标签来更容易地定义可碰撞的对象。
单击主页按钮,然后单击演员选项卡。为所有可碰撞的物体创建一个新的标签。单击标签窗格上的+号,并将新标签重命名为“Collidable”然后将以下到场者拖放到可绑定的标签中:
   
  效果如图图 7-1 所示。

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

图 7-2。 碰撞举动
对演员软块和硬块重复同样的操作。
把它们放在地球上:重力

当你通过加速实现重力时,你需要定义一个加速举动。
在执行元编辑器中打开目标执行元。拖放加速举动并将设置更改为:
   
  拜见图 7-3 。“相对于”实用于方向。如果您选择场景,它将与场景的参考进行比较。相对于场景的 90°方向将向上。如果选择了 actor,它将是相对于 actor 的。因此,如果您选择 90,并且演员的旋转即是 90,效果将是在场景中向左移动(90 + 90)。

图 7-3。 重力为目标
对演员软块和硬块重复同样的操作。
让演员进入场景

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

图 7-4。 在场景上定位目标
点击预览按钮来玩投射弹。
您可以打开位于 Chapter7_Files 文件夹中的文件CanonShowPartII-step1.gameproj。
在这个阶段,你仍然有更多的工作要做,以使它更具可玩性。接下来,您将重点确保在肯定数量的点击后,一些块被破坏。
带点风格:粒子效果

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

粒子效果是一种叫做粒子的举动。可以在标准举动库中找到,需要拖放到一个 actor 中。虽然效果很棒,但是有一个缺点就是你不是在催生演员。这意味着粒子不具有相同的属性。好比不能碰撞,不能有举动。
粒子举动由六个参数标签组成:
   
  产卵率

图 7-5 表现了粒子举动的“繁殖速率”选项卡。

图 7-5 。粒子举动的“繁殖速率”选项卡
在该选项卡中,有三个设置参数:
   
  速率/位置

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

图 7-6。 粒子举动的速率/位置选项卡
在这里你可以定义你产生的粒子的速率和方向以及它们的来源。该选项卡包罗六个设置参数:
   
  巨细

粒子举动的尺寸选项卡如图 7-7 所示。

图 7-7。 粒子举动的尺寸选项卡
“巨细”选项卡定义粒子的巨细、起始巨细以及在指定时间内到达的目标巨细。这些参数是:
   
  如果您选择了“尺寸更改为”,尺寸转换设置将出现在屏幕上。设置参数为:
   
  颜色

图 7-8 表现了粒子举动的颜色选项卡。

图 7-8。 粒子举动的颜色标签
“颜色”选项卡不但定义粒子的颜色,还使您能够在指定的时间内得到起始颜色和目标颜色。
这些参数是:
   
  如果您选择了“颜色更改为”,颜色过渡设置将出现在屏幕上。设置参数为:
   
  循环

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

图 7-9。 旋转选项卡
您可以定义初始旋转角度以及角速率(粒子的旋转速率)。
图像

图 7-10 表现了图像选项卡。

图 7-10。 粒子举动的图像选项卡
您可以通过从下拉按钮中选择图像来使用图像库中的图像,而不是基本的正方形。以前的设置继承实用。
色彩的爆炸

在玩一点粒子举动之前,你需要在游戏中遵照一些额外的步骤。
在 actor 编辑器中打开软块,创建一个名为“NbHit”的新整数 Actor 属性,默认值为 0。每次与抛射体碰撞,该属性都会增加 1。
创建名为“碰撞增量”的新规则规则的条件是“执行元吸收事件”与“执行元类型”的“投射体”发生“重叠或辩论”然后将更改属性举动拖放到规则和更改软块中。NbHit 到软块。NbHit+1。
接下来,创建第二个名为“块销毁”的规则这个规则会在投射物击中两次后摧毁行动者。规则的条件是“属性”“软块”。NbHit"“≥”"2。"然后将销毁举动拖放到规则中。
软块的 Actor 编辑器视图如图图 7-11 所示。

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

图 7-12。 演员编辑视角的硬屏蔽
现在,让我们玩一下粒子举动。
将名为star.png的 Chapter7_Files 文件夹中的图像导入到项目标图像库中。
在执行元编辑器中打开目标执行元。创建一个新规则,并将其命名为“目标破坏”规则的条件是“执行元吸收事件”与“执行元类型”的“投射体”重叠或辩论拖放粒子举动并将设置更改为:
   
  拖放另一个粒子举动,并将设置更改为(或通过按住 Option 键拖移它来复制之前的举动)
   
  拖放另一个粒子举动并将设置更改为:
   
  拖放另一个粒子举动,并将设置更改为:
   
  点击预览按钮来玩抛射体。
您可以打开位于 Chapter7_Files 文件夹中的文件CanonShowPartII-step2.gameproj。
使用表格进行性能优化

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

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

图 7-13。 表格选项卡视图
要创建一个新表,只需点击屏幕左下方的+号。您可以通过单击表名来重命名表名。表格将表现为游戏属性,您将使用特定的功能来访问表格的内容。也可以从 Excel 或任何其他导出 CSV 格式的软件中导入表格。
您可以通过双击表格在表格编辑器中打开表格。表格编辑器如图 7-14 所示。

图 7-14。 表格编辑
您也可以在表格编辑器中修改表格的名称。您可以通过修改表名旁边的参数来添加行和列。
您将按列选择表中包罗的数据类型。这意味着每一列都是特定类型的数据。通常,您可以选择文本、整数、布尔、实数和角度。您也可以命名您的列和行,如图 7-15 所示。

图 7-15。 一张简朴的桌子
表格编辑器的另一个非常有用的特性是能够导入和导出 CSV 文件。如果您有大文件的数据,您可以立即从 CSV 文件导入它们。
末了但同样重要的是,让我们快速回首一下用于表格的函数。图 7-16 表现了访问表格信息的三个函数。

图 7-16。 表功能
让我们检查每个函数的语法和效果。
tableCellValue()返回指定表格中指定单元格的值。语法是:
tableCellValue(表格,行,列)
   
  tableColCount()返回指定表格中的列数。语法是:
tablecolcount 表
   
  tableRowCount()返回指定表格中的行数。语法是:
tableRowCount 表
   
  让我们练习一下桌子的用法。
在一个场景中管理多个场景

让我们来相识一下表格的高级用途。您将对演员进行一些采取,并使用表格来存储游戏的差别级别。
创建表格

您将为要采取的每个到场者创建一个表。基本上,您将拥有硬块 1、硬块 2、软块和目标的表格。表格将包罗每个级别的块的位置。您将拥有两列(X 和 Y)和三行(三个级别)。如果要创建更多的级别,就需要创建更多的行。
转到“表”选项卡并创建一个新表。将该表重命名为“Hard Block1”双击表格编辑器中的表格将其打开。根据图 7-17 在该表中键入数值。

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

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

图 7-19。??【软挡台】??
再次重复操作,添加另一个名为“Target”的表,并添加图 7-20 中的值。

图 7-20。 目标表
现在,您已经设置好了所有的桌子。您将相应地修改您的演员。
实现采取

采取的目标很简朴。您放置一个块,当需要销毁该块时,不使用销毁举动,而是将演员移出可见场景。当你进入下一关时,你将再次把方块的位置改回到下一关应该在的地方。如许你就可以用一个场景拥有数百个关卡,这在内存上是非常高效的。
你将使用一个游戏属性来存储当前级别。在场景编辑器中打开场景,并创建一个名为“WhatLevel”的新整数游戏属性默认值为 1。
在 actor 编辑器中打开场景最右侧的 Hard Block actor 实例,如图图 7-21 所示。

图 7-21。 最右边硬挡选中
解锁执行元的实例。将实例重命名为“Hard Block1”
将“更改属性”举动拖放到实例中,并更改 Hard Block1。Position.X 到 tableCellValue(游戏。硬块 1,游戏。WhatLevel,1)。将另一个更改属性举动拖放到实例中,并更改 Hard Block1。Position.Y 到 tableCellValue(游戏。硬块 1,游戏。WhatLevel,2)。这两种举动如图图 7-22 所示。

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

图 7-23。 硬块的初始定位 2
打开软块执行元的实例。
将更改属性举动拖放到实例和更改软块中。Position.X 到 tableCellValue(游戏。软挡,游戏。WhatLevel,1)。将另一个“更改属性”举动拖放到实例和“更改软块”中。Position.Y 到 tableCellValue(游戏。软挡,游戏。WhatLevel,2)。这两种举动如图图 7-24 所示。

图 7-24。 软垫块的初始定位
打开目标角色的实例。
将更改属性举动拖放到实例和更改目标中。Position.X 到 tableCellValue(游戏。目标,游戏。WhatLevel,1)。将另一个更改属性举动拖放到实例和更改目标中。Position.Y 到 tableCellValue(游戏。目标,游戏。WhatLevel,2)。这两种举动如图图 7-25 所示。

图 7-25。 目标的初始定位
重新打开 Hard Block1 实例。在块销毁规则中,通过点按举动右侧的圆形十字来移除销毁举动。
将更改属性举动拖放到规则中,并更改硬块 1。位置 X 到 640。将更改属性举动拖放到规则中,并更改硬块 1。位置 Y 到 1500。更新后的块破坏规则如图 7-26 所示。

图 7-26。 更新了区块破坏规则
对硬块 2(如图图 7-27 所示)和软块(如图图 7-28 所示)进行类似的修改。

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

图 7-28。 更新了软格挡的格挡破坏规则
接下来,打开目标到场者的实例。将计时器举动拖放到末了一个粒子举动下方的目标破坏规则中。选中“运行至完成”后,将计时器举动的设置更改为“0.5 秒后”。
将更改属性举动拖放到计时器和更改目标中。位置 X 到 1400。将更改属性举动拖放到计时器和更改目标中。位置 Y 到 1300。更新后的目标摧毁规则如图 7-29 所示。

图 7-29。 更新了目标摧毁规则
你在这里使用一个计时器,由于你想看到粒子效果。
知道目标何时被摧毁

为了知道目标何时被摧毁,你需要另一个游戏属性。创建一个名为“TargetDestroyed”的新布尔游戏属性
在刚刚创建的计时器中添加一个新的改变属性举动,然后改变游戏。目标销毁为真,如图图 7-30 所示。

图 7-30。 TargetDestroyed 设置为真
你现在会知道目标何时被摧毁;这表明是时间移动到下一个级别,并根据下一个级别坐标重新定位场景中的演员了。就这么办吧。
仍然在目标执行元的实例中,创建一个名为“Level Up”的新规则,它将满足以下两个条件:
   
  变弹丸”为“真”
  添加改变抛射体的条件为真,以便当抛射体回到弹弓时重置场景。
拖放一个改变属性举动和改变游戏。什么水平地游戏。什么水平+1。这将提拔级别。
接下来,您将重新定位目标。但在此之前,你需要确保目标没有动量活动。这将是来自前一个场景的活动。由于您将在其他块中重复使用它,以是我将向您展示怎样创建自定义举动。
创建自定举动

基本上,为了确保目标不移动,您将所有速率(线性和角度)以及旋转角度重置为 0。
在升级规则中,创建一个名为“无移动”的新组使用更改属性举动来设置以下内容(如图 7-31 所示):
   
  

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

图 7-32。 没有活动习惯的举动
就如许!您已经创建了第一个自定义举动。稍后您将使用此举动。
在新的层面上定位目标

在向上级别规则中,拖放更改属性举动和更改目标。Position.X 到 tableCellValue(游戏。目标,游戏。WhatLevel,1)。
拖放另一个更改属性举动和更改目标。Position.Y 到 tableCellValue(游戏。目标,游戏。WhatLevel,2)。
更新后的等级提拔规则如图图 7-33 所示。

图 7-33。 更新了升一级规则
对目标实例的末了一个修改:你需要在每个游戏开始时重置 TargetDestroyed 属性。
将更改属性举动拖放到目标实例中,然后更改游戏。目标销毁为假,如图图 7-34 所示。

图 7-34。 重置目标摧毁属性
更换积木

让我们修改硬块和软块,使它们在目标被摧毁后重新定位。
在 Actor 编辑器中打开实例 Hard Block1。创建一个新规则,并将其重命名为“Level Up”该规则的触发器是两个属性 TargetDestroyed 和 Change 设置为 true。因此,将条件修改为:
   
  变弹丸”为“真”
  然后,拖放一个计时器,将设置更改为“1”秒后,并选中“运行至完成”。在重新定位块之前使用计时器,以确保抛射体有充足的时间飞进场景。如果你不等待,碰撞可能会发生,可能会弄糟你的游戏。
现在将无移动自定义举动拖放到计时器中。
将两个更改属性拖放到计时器中,然后更改:
   
  您还需要重置该块的命中次数。拖放更改属性举动并更改硬块 1。NbHit 到 0。
硬块 1 的调平规则如图图 7-35 所示。

图 7-35。 硬块升级规则 1
在 Actor 编辑器中打开 Hard Block2。创建一个名为“升级”的新规则将条件地区修改为:
   
  变弹丸”为“真”
  然后,拖放一个计时器,将设置更改为“1”秒后,并选中“运行至完成”。现在将无移动自定义举动拖放到计时器中。将两个更改属性拖放到计时器中,然后更改:
   
  拖放更改属性举动并更改硬块 2。NbHit 到 0。
对软块实例重复相同的步骤。创建一个名为“升级”的新规则将条件地区修改为:
   
  然后,拖放一个计时器,将设置更改为“1”秒后,并选中“运行至完成”。现在,将“无移动”自定义举动拖放到计时器中。将两个更改属性拖放到计时器中,然后更改
   
  拖放更改属性举动并更改硬块 2。NbHit 到 0。
末了的步骤是处理射弹。
修改射弹开始一个新的水平

你将使用重新定位射弹的末了来完成重置你的参数。
在演员编辑器中打开弹丸实例。睁开位于“回到位置”规则中的属性重置规则。
将更改属性举动拖放到属性重置规则和更改游戏中。TargetDestroyed 为 false。
在“回到位置”规则中,创建一个您将放置在顶部位置的新规则。条件是“属性”“目标已销毁”为“真”然后在这个规则中拖拽一个“改变属性”的举动,改变游戏。实验离开到 4。这将在您更改等级时将实验次数重置回 4 次。
你需要做的末了一个修改是延迟重新定位,由于把投射物放回它的原始位置会重置属性。你需要有须要的时间来重新放置所有的积木。
将计时器举动拖放到“回到位置”规则中,并将设置更改为“0.2 秒后”,同时选中“运行至完成”。接下来,将规则和两个举动拖放到计时器中,如图图 7-36 所示。

图 7-36。 重置一级后剩余的实验次数
此外,您需要替换“回到位置”规则中的插值举动,由于它们可能会在回到弹弓位置时触发与块的不须要碰撞。您将改为使用更改属性举动。
从“回到位置”规则中移除两种插值举动。拖放两个更改属性举动,并将设置更改如下(如图图 7-37 ):
   
  末了,你需要修改假射弹。当实验次数重置后,它会重新出现。
打开每个虚拟射弹实例,并睁开现有规则的 Otherwise 部分。在“其他”部分拖放一个“更改属性”举动,然后更改虚拟射弹。颜色从α到 1。这将使诡计奏效。
点击预览按钮来玩抛射体。
您可以打开文件夹 Chapter7_Files 中的文件CanonShowPartII-step3.gameproj。
添加酷菜单

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

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

图 7-37。 菜单场景
双击菜单场景打开场景编辑器。
由于您正在进行一个 iPhone 风景项目,屏幕尺寸为 480 × 320。由于你想要三页菜单,你需要把宽度改为 1440。
表现场景属性并将宽度更改为 1440,如图图 7-38 所示。

图 7-38。 菜单场景属性
管理解锁级别

为了管理级别,您将使用一个整数游戏属性,该属性将包罗解锁的最高级别。默认情况下,它将从一点开始。然后在游戏过程中,每升一级都会检查新的 WhatLevel 属性是否高于 MaxLevel。如果是这种情况,您将使用 WhatLevel 的值替换 MaxLevel 的值。
在菜单场景中,您将使用一个 actor 来表现盒子的级别编号,大概如果级别尚未解锁,则表现一个红色叉号。长方体的级别编号将是一个演员属性,对于场景中的每个实例都有差别的值。
让我们做这一切!
创建一个名为“MaxLevel”的新整数游戏属性默认值为 1。在场景编辑器中打开初始场景。打开目标实例,并在向上级别规则中找到 WhatLevel 的增量。就在这个增量下面,用条件“属性”“游戏”创建一个新规则。WhatLevel" “>” "game.LevelMax . "然后将一个更改属性举动拖放到规则中,并更改游戏。MaxLevel 到游戏。WhatLevel,如图图 7-39 所示。

图 7-39。 MaxLevel 更新
接下来,创建一个名为“BoxLevel”的新演员双击该角色,在角色编辑器中打开它。创建名为“Level”的整数类型的 actor 属性
创建一个条件为“属性”的新规则。Level" “≤” "game.MaxLevel . "拖放一个表现文本举动,选择 BoxLevel。级别作为要表现的属性。将巨细更改为 60。
睁开规则的“否则”部分,然后拖放“表现文本”举动。键入要表现的大写字母 X。将尺寸改为 60,颜色改为红色。
该规则如图 7-40 所示。

图 7-40。 为关卡框表现什么内容
根据图 7-41 ,在菜单场景上放置三个 BoxLevel actor 实例。

图 7-41。 定位盒子
打开场景中演员的每个实例,从左到右将级别属性从 1 更改为 3。
接下来,您将实现滑动效果。
实现滑动效果

要实现滑动效果,你需要两个演员。基本上,第一个将记载手指移动,第二个将根据从第一个演员收集的数据控制摄像机。
感动演员

Touch actor 将用于记载手指活动。它将在场景中不可见。
创建一个名为“触摸”的演员。将 Touch actor 的一个实例拖放到场景中,双击该实例在 actor 编辑器中打开它。单击锁图标以解锁实例。
创建一个新规则,条件为“执行元吸收事件”“鼠标按钮”为“按下”这将检测到手指已经位于屏幕上。与上一章相反,你不用触摸来检测手指触摸。你确实使用了鼠标按键检测,由于这给了你检测屏幕上任何地方的触摸的可能性,而与演员的位置无关。
然后将更改属性举动拖放到规则中,并更改触摸。Position.X 到 Device.Mouse.Position.X,然后将约束属性举动拖放到规则中,并更改 Touch。活动。线速率。x 对 10*(游戏。鼠标。position . x–触摸。位置. X)。这两个举动将确保只要手指在屏幕上就没有惯性。它随着手指移动。
末了,将约束属性举动拖放到规则中,并更改触摸。活动。线速率。要触摸的 x。活动。线速率。X*0.95。这末了一个举动会产生一个惯性,它会随着 95%的淘汰而自行减速(*0.95)。
该规则如图 7-42 所示。

图 7-42。 触摸法则
末了一个重要的修改是,这个 actor 应该位于不可滚动的层上。在场景编辑器中,单击“场景”选项卡以表现场景属性检查器。点击图层选项卡,如图图 7-43 所示。

图 7-43。 层层督察
通过点按图层检查器中的+号创建一个新图层。默认情况下,它将创建一个名为“层 1”的新层取消选中“可滚动”下面的框
睁开配景图层,在图层检查器中向下移动到触摸演员到图层 1,如图图 7-44 所示。

**图 7-44。**第一层中的
*末了,在 actor 编辑器中打开 Touch actor 实例,取消选中 Visible 框。
摄像机控制演员

我们来研究一下 CameraControl 演员。
创建一个名为“CameraControl”的新演员将其颜色变为鲜绿色。该演员将是不可见的,但在定位该演员时会很有资助。
将 CameraControl 的一个实例拖放到场景中。尽量把演员定位在场景的中央,把演员重塑的尽量小,如图图 7-45 所示。

图 7-45 。将摄像机控制器定位在场景上
点击相机图标,设置相机地区。在 CameraControl actor 上将摄像机地区缩小到一个很小的地区,如图图 7-46 所示。

图 7-46。 修改过的摄像区
回到场景编辑器。双击 CameraControl actor 的实例。单击锁图标以解锁实例。
将控制摄像机举动拖放到执行元中。
接下来,拖放约束属性举动并更改 CameraControl。活动。线速率。x 到当前场景。层次。第一层。触摸。活动。线速率。x,如图图 7-47 所示。

图 7-47。 移动摄像机
您在来自 Touch 的速率值前面放了一个负号,由于您盼望相机向手指的相反方向移动。如果你从右向左移动手指,你想看到屏幕右边(相反方向)是什么。
现在你将为左右双方添加边界。x 轴值的最小值为 240,最大值为(1440-240)。拖放两个约束属性举动并更改:
   
  如图 7-48 中的所示。

图 7-48。 摄像头控制举动
末了但同样重要的是,取消选中 visible 属性,它位于这个 actor 的 actor 属性中。
启用级别选择

你现在需要一种方法来点击一个盒子来玩一个解锁的关卡。你将使用一个非常简朴的技巧。当您触摸滑动时,触摸和释放的位置将不会相同。但是,如果您筹划单击一个框,触摸和释放位置将是相同的。
创建两个名为“TouchedX”和“ReleasedX”的 real 类型的游戏属性您将使用这些属性来存储触摸和释放的值。
接下来,在 actor 编辑器中打开 BoxLevel actor 原型。
创建一个新规则,条件为“执行元吸收事件”“触摸”为“按下”然后在规则和改变游戏中拖放一个改变属性举动。TouchX 至设备。Mouse.Position.X,如图图 7-49 所示。

图 7-49。 记载触摸 X 值
创建一个新规则,条件为“执行元吸收事件”“打仗”为“已释放”然后在规则和改变游戏中拖放一个改变属性举动。释放到设备。Mouse.Position.X,如图图 7-50 所示。

图 7-50。 登记释放 X 值
接下来,创建一个规则,检查何时释放触摸,x 位置是否相同,以及关卡是否解锁。
创建一个符合以下条件的新规则:
   
  然后将一个改变属性举动拖放到规则和改变游戏中。末了,根据图 7-51 ,拖拽一个改变场景举动,将设置改为“转到场景:”初始场景。

图 7-51。 启动关卡
让我们通过在初始场景中添加一个菜单按钮来竣事这个项目。
在初始场景上添加一个菜单按钮

在场景编辑器中打开初始场景。
创建一个名为“Menu”的新演员将颜色\Alpha 更改为 0。
在执行元编辑器中,将表现文本举动添加到菜单执行元中,并键入“Menu”作为要表现的文本。
接下来,创建一个新规则,条件是“执行元吸收事件”“触摸”是“按下的”末了,将更改场景举动拖放到规则中,并选择菜单场景。
演员举动如图图 7-52 所示。

图 7-52。 菜单演员举动
末了但同样重要的是,将演员拖放到场景右上角的初始场景中。
点击预览按钮来玩你的菜单。
您可以打开位于 Chapter7_Files 文件夹中的文件CanonShowPartII-step4.gameproj。
总结

哇哦!你刚刚走了多长的路啊!你创建游戏的整个游戏机制,好比愤怒的小鸟。在本章中,您将:
   
  八、图形和声音效果:迷宫

当我还是个孩子的时间,电子游戏在家庭中并不常见。当时间,我们还有别的游戏。是的,我们有非视频游戏。迷宫中的球谜题非常受欢迎;它们在每个药店都有差别的尺寸、形状和颜色(图 8-1 )。

图 8-1。 迷宫球图片来自维基百科
这些游戏可以追溯到 19 世纪。为什么我在一本关于电子游戏的书里谈论非电子游戏?嗯,由于在这一章中你将把一个复古游戏酿成一个复古视频游戏。你将用 GameSalad 实现一个迷宫游戏。
在 GameSalad 中实现一个迷宫游戏是相当容易的,并且给你无限数量的游戏去筹划。在前面的章节中,你学习了一些严厉的游戏逻辑,你将利用这些知识打下迷宫游戏的基础。您将再次实现加速率计活动以及计时器举动。
然后我将向你展示怎样使用 GameSalad 中的一些技巧实现一些很酷的灯光特效。末了,我将介绍声音导入以及怎样使用声音举动来创建空间声音效果。
创建迷宫游戏项目

首先打开 GameSalad creator。在“新建项目”下,选择“我的巨大项目模板”,然后单击“在 GameSalad Creator 中编辑”。
根据表 8-1 设置项目信息。

单击文件
另存为保存您的项目。命名为Labyrinth.gameproj。
为迷宫游戏创造演员

在这个游戏中,你将使用以下角色:
   
  

球是游戏的主角,从某种意义上说,它是由玩家控制的主角。由于是球,你会把碰撞形状改成圆形,如许会提供更真实的碰撞效果。
创建一个新的 actor,双击它打开 Actor 编辑器。用表 8-2 中的参数编辑演员属性。

导入位于 chapter_08 文件夹中名为ball.png的图像。将ball.png拖放到演员中。
配景

配景演员只是用来表现游戏中的配景图像。
创建一个新的 actor 并双击它以打开 Actor 编辑器。用表 8-3 中的参数编辑演员属性。

导入位于 chapter_08 文件夹中的wood background.png图像。将它拖放到演员中。
墙壁

墙角色用于定义球的可碰撞边界。将恢复值更改为 0 以避免反弹是很重要的。此外,墙壁的位置是固定的,因此您将取消选中可移动属性。
创建一个新的 actor,双击它打开 Actor 编辑器。用表 8-4 中的参数编辑演员属性。

通过

门演员用来给游戏增加一点复杂性。它阻止进入获胜地区。玩家必须执行一些步骤来打开门并进入获胜地区。
创建一个新的 actor,双击它打开 Actor 编辑器。用表 8-5 中的参数编辑演员属性。

快开门

开门演员被用作打开胜利洞入口的开关按钮。
创建一个新的 actor,双击它打开 Actor 编辑器。用表 8-6 中的参数编辑演员属性。


胜利洞

胜利洞演员充当球的目标。作为球员,你的目标是把球打进洞里。演员要比球稍微大一点,视觉效果好。
创建一个新的 actor 并双击它以打开 Actor 编辑器。用表 8-7 中的参数编辑演员属性。

丢失的洞

为了让游戏更难一点,你会使用一些陷阱:让你输的洞。这些是丢失的洞。
创建一个新的 actor 并双击它以打开 Actor 编辑器。用表 8-8 中的参数编辑演员属性。

用规则和举动定义游戏逻辑

现在是时间定义游戏逻辑了。你将会重复使用前面章节中提到的规则和举动。这是回首定时器举动和加速率计使用的绝佳时机。
球类规则和举动

为了移动球,你将像在第四章中一样使用加速率计。你将实现四个方向。请记住,如果你要发布这个游戏,你需要实现自动旋转,以保持有用的活动。
在演员编辑器中打开球演员。创建一个新组,命名为“加速率计。”
创建一个新规则,并将其命名为“up”规则的条件是“属性”“设备”。加速率计。X""
   
  该规则如图 8-2 所示。

图 8-2。 向上加速计规则
该公式将确保您得到模拟加速率。它与加速率计轴的值相干联,以是你移动得越强,它就走得越快。
重复上述步骤三次以上。
按住 option 键并向下拖动现有规则,复制您刚刚创建的规则。把它命名为“对”规则的条件是“属性”“设备”。加速率计。Y"“>”"0.1。"然后拖放加速举动,并将设置更改为:
   
  该规则如图 8-3 所示。

图 8-3。 右加速计规则
创建一个新规则,并将其命名为“down”规则的条件是“属性”“设备”。加速率计。X"“>”"0.1 "。然后拖放加速举动,并将设置更改为:
   
  该规则如图 8-4 中的所示。

图 8-4。 向下加速计规则
创建一个新规则,并将其命名为“left”规则的条件是“属性”“设备”。加速率计。Y""
   
  该规则如图 8-5 所示。

图 8-5。 左侧加速率计规则
提示:如果你想筹划一个即将发布的游戏,不要忘记处理屏幕旋转,如第四章中所表明的。
接下来,你需要确保球从墙壁和门演员那里反弹返来。拖放碰撞举动,并将设置更改为与“演员类型”“墙”碰撞时反弹通过拖放第二个碰撞举动重复该操作,但根据图 8-6 更改设置使其与“类型的演员”“门”碰撞。

图 8-6。 球的碰撞规则
配景规则和举动

配景包罗几个更改属性举动,它们将用于将演员完善地定位在屏幕的中央。
在演员编辑器中打开配景演员。创建一个新组,命名为“定位配景”在群组中拖放更改属性举动并更改配景。位置 X 到 240。使用附加的更改属性举动和更改配景重复该操作。位置 Y 到 160。该组如图 8-7 所示。

图 8-7。 定位配景
开门规则和举动

你需要打开阻挡通往获胜洞的门。玩家必须将球移动到一个按钮上,该按钮将触发门的打开。该按钮用作开/关按钮。这意味着如果球碰到按钮,它就会打开门。如果球再碰到按钮,就会关门,如许循环下去。
在开门演员里,你会察觉到和球演员的碰撞。这将触发布尔游戏属性的变化。根据前面属性的值,门将从一个位置移动到另一个位置。但是,为了在球再次击中按钮之前有时间将球从按钮上移开,您需要添加一个 2 秒的计时器。如果你不使用这个计时器,让球不停在按钮上移动,它会不停从真到假快速改变状态,以至于你甚至不会用眼睛留意到它。
创建一个布尔类型的新游戏属性,并将其命名为“开门”在演员编辑器中打开开门演员。创建一个 Boolean 类型的新 actor 属性,并将其命名为“Timer”
创建一个新规则,并将其命名为“更改为假”将“全部”应用于以下情况:
   
  然后拖拽一个改变属性举动,改变游戏。向 0 敞开大门。
拖放第二个更改属性举动并更改开门。计时器到 1。
接下来,拖放一个计时器举动,并在选中“运行到完成”的情况下,将设置更改为“2 秒后”。
末了,将更改属性举动拖放到计时器中,并更改开门。定时器到 0。
完备的规则如图 8-8 所示。

图 8-8。 改假统治
按住 Option 键并向下拖移来复制规则。将其命名为“更改为真”你基本上会把效果反过来。将“全部”应用于以下情况:
   
  然后拖拽一个改变属性举动,改变游戏。打开 1 号门。
拖放第二个更改属性举动并更改开门。计时器到 1。
接下来,拖放一个计时器举动,将设置更改为“2 秒后”,并勾选“运行至完成”。
末了,将更改属性举动拖放到计时器中,并更改开门。定时器到 0。
完备的规则如图 8-9 所示。

图 8-9。 变真法则
门规则和举动

假设门位于屏幕的顶部,向下打开(如果你想让门向上或向左或向右,你可以很容易地调解设置)。将 Y 位置的初始值存储在 actor 属性中,并对 Y 位置值减去 actor 的高度进行前后插值。
首先,创建一个 real 类型的新 actor 属性,并将其命名为“InitialY”
接下来,拖放一个更改属性举动和更改门。最初是门。根据图 8-10 定位 Y 轴。

图 8-10。 存储初始 Y 位置值
然后,创建一个新规则,并将其命名为“OpenDoor is True”这条规则将用于开门。将“全部”应用于以下情况:
   
  第二个条件将检查门是否关闭。
拖放插值举动,并将设置更改为“门”。位置。Y " “门。首先是门。尺寸.高度” " 0.5 " “线性。”
完备的规则如图 8-11 所示。

图 8-11。 开门是真规则
末了,创建一个新规则,并将其命名为“OpenDoor is False”这条规则将用于关门。将“全部”应用于以下情况:
   
  第二个条件将检查门是否关闭。
拖放插值举动,并将设置更改为“门”。位置。Y " "门。最初为“0.5”线性
完备的规则如图 8-12 所示。

图 8-12。 开门是假规则
胜利洞规则和举动

这一部分的末了一步是当球碰到胜利洞演员时重置游戏。对于一个真正的游戏,你会改变场景到下一个级别。
创建一个新规则,条件为“执行元吸收事件”“与“执行元类型”“球”重叠或辩论然后按照图 8-13 将一个重置游戏举动拖放到规则中。

图 8-13。 胜利洞法则
通过部署场景来筹划游戏区

是时间部署场景了。首先,拖放配景演员,并实验将其定位在场景的中央。
然后,您将使用差别巨细的墙角色的多个实例。GameSalad 允许您拥有多个差别巨细的 actor 实例,但仍然坚持规则和举动的原型。
将墙演员拖放到场景中。按照图 8-14 将鼠标指针定位在演员的侧面(在白色圆圈上),按住点击并保持点击以调解演员的巨细。

图 8-14。 调解演员尺寸
将尺寸改为最小宽度,高度与场景高度匹配。然后按照图 8-15 将墙移动到场景左侧。

图 8-15。 定位第一面墙
现在重复操作,以得到类似于图 8-16 的迷宫。

图 8-16。 迷宫布局
末了,根据图 8-17 将球、胜利洞、开门和门演员拖放到现场。

图 8-17。 完成布局
在您的设备上实验游戏。
实现灯光特效

LightFX 被以为是带有灯光的特殊效果。它们通常用于视频游戏中,以增加交互性或增强玩家体验。
打开文件Labyrinth-step1.gameproj,可以在这个阶段直接开始。
我现在给你看一个非常酷的把戏。这就是我所说的“灯灭了”想象一下球周围只有少量光线的迷宫游戏;现场一片漆黑。当然,光线必须跟随球,你会通过球发现这个地区。如果你已经有了 iOS 版的迷宫游戏,你就知道这是一个通用的功能。
诀窍很简朴。您将使用一个中心有透明圆盘的黑色图像。盘的巨细取决于你想做游戏的难度。此外,图像的巨细应该是场景巨细的两倍。圆盘的中央将被约束到球的位置。有了这个尺寸,无论球去那里,整个场景都会被覆盖。
你将使用一些游戏属性来存储球的位置。创建两个名为“BallX”和“BallY”的游戏属性
在演员编辑器中打开球演员。拖放一个约束属性举动并改变游戏。BallX 到 Ball.Position.X .对 BallY 和 Position 重复相同的操作。y 根据图 8-18 。

图 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 点击演员编辑器或场景编辑器中的声音选项卡。

图 8-19。 声音标签
单击+号导入新的音频文件。选择名为brick.mp3的文件进行导入。然后,您需要根据图 8-20 选择是将文件作为音乐还是声音导入。

图 8-20。 音乐或声音导入
选择“导入为声音”
接下来,在 Ball actor 中创建一个规则,在每次与墙壁发生碰撞时播放声音。在演员编辑器中打开球演员。创建一个新规则,条件将是“执行元吸收事件”“与“执行元类型”“墙”重叠或辩论根据图 8-21 ,将播放声音举动拖放到规则中,并将设置更改为声音:“砖块”和音量:“0.50”,并选中“运行到完成”。

图 8-21。 播放声音规则
我建议尽可能多地使用定位音。定位声音功能增加了大量的交互性。如果播放声音的演员在屏幕的左侧,会给人一种声音是从左侧传来的感觉,非常好看的效果。此外,如果演员在播放声音时移动,声音将随演员一起“移动”。
你可以在你的设备上试试这个游戏。
MP3 或其他格式
GameSalad 支持Caf、ogg、mp3、m4a等多种声音格式。
关于暂停音乐和继承音乐:
如果您在游戏中实现了暂停功能并有配景音乐,您可能盼望暂停音乐,并在玩家取消暂停游戏后继承播放。为此,您需要使用暂停音乐和继承音乐举动。
总结

在这一章中,你回首了创建一个新项目和定义游戏的基础。你还学到了一些非常强大而简朴的特效,这些特效肯定会增加游戏和玩家体验的趣味。
你有:
   
  九、奖金,游戏中央,和 iAd:越狱

在这一章中,你将完成你在第四章中开始的游戏。我预备了一个名为BreakaWallPartII.gameproj的文件,其中包括配景图片和演员图片。这些改进将不在本章讨论。关于怎样实现图形和声音,请参考前面的章节。
在这一章中,我想在你把你的游戏提交到 App Store 之前,会合讨论几个元素的最终确定。您将学习怎样:
   
  你可以免费下载我版本的《越狱》,在本章和第四章中用来说明游戏构建的概念
[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 所示。

图 9-1。 首页场景
将 Homescene 放在这个位置可以确保它是你开始游戏时的第一个场景。
关于闪屏的留意事项:
正如您将在第十一章中看到的,您可以在发布过程中创建一个定制的闪屏,但这仅限于静态图像。默认情况下,这将是一个 GameSalad 闪屏。一个技巧是用黑色图像替换启动画面,并在第一个场景中设置一个动画,作为动画启动画面。
创造演员

在本节中,您将创建几个额外的演员在您的主屏幕上使用。配景演员将用于包罗配景图像。您还将创建几个按钮来为播放器添加控件。
主页

创建一个新的 actor 并双击它以打开 Actor 编辑器。用表 9-1 中的参数编辑演员属性。

单击 Images 选项卡表现图像资源,并将Home.png拖放到 actor 中。
开始游戏

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

单击 Images 选项卡表现图像资源,并将play1.png拖放到 actor 中。
扬声器

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

单击 Images 选项卡表现图像资源,并将Speaker.png拖放到 actor 中。
实现规则和举动

现在是时间定义演员背后的逻辑了。最重要的逻辑将存在于您刚刚创建的控制角色中。开始游戏演员将让你开始玩,扬声器演员将控制音量(开或关)。
首页

为了完善地定位配景对象,您将使用更改位置属性的技巧。
在演员编辑器中打开家庭演员。拖放更改属性举动和更改主页。位置 X 到 384。
拖放更改属性举动和更改主页。位置 Y 到 512。
这两种举动如图 9-2 所示。

图 9-2。 用改变属性定位配景
现在,将演员拖放到场景中,并将其放置在大约中央的位置。
开始游戏

开始游戏演员将被用作一个按钮。您将实现一个翻转效果,以便当按钮被按下时字体的颜色发生变化。但是,由于它是一个图像,您将使用“更改图像”举动,并使用差别的图像来替换活跃的图像。
您将分两步进行。首先,当 actor 被按下时,您将把图像更改为具有差别字体颜色的图像。然后,当释放 actor touch 时,您将把图像改回原始图像。这只是创造按钮效果的众多方法之一。另一种方法是将 alpha 更改为 0.5,大概将 RGB 颜色更改为 0.5。
在演员编辑器中打开开始游戏演员。创建一个新规则,并将其命名为“触摸被按下”条件是“演员吸收事件”“触摸”是“按下的”
然后将“更改图像”举动拖放到规则中,并从“将图像设置为”旁边的下拉列表中选择“播放 2”
让我们进入翻车的第二阶段。
创建一个新规则,并将其命名为“触摸已释放”条件是“演员吸收事件”“触摸”是“释放”这也可以在“触摸被按下”规则的“否则”部分中完成。
然后将更改图像举动拖放到规则中,并从“将图像设置为”旁边的下拉列表中选择“播放 1”
这两条新规则如图 9-3 所示。

图 9-3。 按下触摸并释放触摸
你已经有了视觉效果,但是开始游戏角色的目标是让你开始游戏。
为了到达这个目标,您将在规则“触摸被释放”中添加一些举动为了有一个安稳的过渡,我经常在实现变化场景之前使用一个短定时器。这将通过给玩家时间来查看按钮状态的变化来改善用户体验。
将计时器举动拖放到“释放触摸”规则中的“更改图像”举动下方。将计时器设置为“0.5”秒后。然后根据图 9-4 在定时器中拖放一个变化场景举动并将其设置为 1 级。

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

图 9-5。 声音属性
在执行元编辑器中打开扬声器执行元。创建一个新规则,并将其命名为“触摸被按下”条件是“动作吸收事件”“触摸”被“按下”接下来,拖拽一个改变属性举动,改变游戏。游戏开始。根据图 9-6 ,SoundOn+1)%2。

图 9-6。 触摸被按下规则
现在,创建一个新规则,并将其命名为“SoundOn 即是 1”条件将是“游戏属性”。SoundOn"“=”"1 "。接下来,拖放一个更改图像举动,并将图像设置为扬声器。末了,拖放更改属性举动和更改设备。根据图 9-7 ,音频音量为 1。

图 9-7。 SoundOn 即是 1 的规则。
末了,创建一个新规则,并将其命名为“SoundOn 即是 0”条件是“属性”“游戏。SoundOn"“=”"0 "。接下来,拖放一个更改图像举动,并将图像设置为扬声器关闭。末了,拖放一个改变属性举动和改变设备。根据图 9-8 将音频音量调至 0。

图 9-8。 SoundOn 即是 0 规则
将演讲者演员放置在左下角的场景中。
你现在可以在 GameSalad 的预览窗口中测试你的作品。
添加记分

在这一章的背面,我会谈到游戏中央。但是首先你需要有一个评分体系。你会让它变得非常简朴。每破坏一个青砖,分数就会加一分。而且每摧毁一个红砖,你就会在分数上加两分。要从这一点跟踪项目,请打开名为BreakaWall-partII-step2.gameproj的文件。
Integer 类型的游戏属性将被用于保持分数。您将确保每次开始游戏时手动重置。每击中一块砖,分数就会增加。末了但同样重要的是,您将在屏幕的右上角地区表现分数,如许玩家可以跟上他/她的进度。
首先,让我们创建分数属性。创建一个 Integer 类型的新游戏属性,并将其命名为“Score”保持默认值为零。
打开开始游戏演员进入演员编辑器。将更改属性举动拖放到规则“触摸被释放”和更改游戏中。根据图 9-9 得分为 0。

图 9-9。 更新触摸被释放规则
在 actor 编辑器中打开 Brick1 actor。将更改属性拖放到现有规则中,然后更改游戏。游戏得分。根据图 9-10 ,得分+1。

**图 9-10。**更新了 Brick1 规则
对砖块 2 重复相同的操作,但为每个砖块 2 添加两个点。在 actor 编辑器中打开 Brick2 actor。将更改属性拖放到现有规则中,然后更改游戏。游戏得分。根据图 9-11 ,得分+2。

**图 9-11。**更新了 Brick2 规则
你可以跟上比分,但是把比分表现给玩家不是很好吗?!
ScoreDisplay 演员

创建一个新的 actor,双击它打开 Actor 编辑器。用表 9-4 中的参数编辑演员属性。
分数表现规则和举动

将表现文本举动拖放到 ScoreDisplay 执行元中。按如下方式更改设置(如图 9-12 所示):
   
  

图 9-12。 表现 ScoreDisplay 演员的文本
在场景编辑器中打开 1 级场景,按照图 9-13 将场景中的 ScoreDisplay 演员放置在中心顶部。

图 9-13。 一级场景
创建额外奖励演员

为了让游戏更风趣,你将在一些砖块中加入以下奖励:
   
  点数奖励将由隐藏它们的砖块产生,如果球拍碰到它们,点数奖励将计入得分。同样的原理也实用于自动子弹,但它不是增加点数,而是让球拍自动触发子弹。这些子弹会摧毁砖块。只要布尔游戏属性 AutoBullet 设置为 true,子弹就会自动射出。默认情况下,它被设置为 false。捕捉胶囊将把它设置为真。丢球会把它设置回 false。
要从这一点跟踪项目,请打开名为BreakaWall-partII-step3.gameproj的文件。
50 点封顶的演员

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

单击 Images 选项卡表现图像资源,并将50 pt.png拖放到 actor 中。
100 磅帽演员

创建一个新的 actor,双击它打开 Actor 编辑器。用表 9-6 中的参数编辑演员属性。
单击 Images 选项卡表现图像资源,并将100 pt.png拖放到 actor 中。
自动子弹演员

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

单击 Images 选项卡表现图像资源,并将Bullet.png拖放到 actor 中。
子弹演员

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

单击 Images 选项卡表现图像资源,并将Bullet-img.png拖放到 actor 中。
你新创建的演员应该类似于图 9-14 。

图 9-14。 演员督察
实现额外奖励规则和举动

基本上,你盼望包罗额外奖励的砖块产生一个额外奖励的演员。额外奖励演员将向下移动,当它与球拍重叠时,它将启用奖励。
50 磅扬程

在 actor 编辑器中打开 50 pt cap actor。将“更改速率”举动拖放到演员中,并将设置更改为:
   
  创建一个新规则,并将条件设置为“到场者吸收事件”“与“到场者类型”“球拍”重叠或辩论”拖放一个改变属性举动和改变游戏。游戏得分。得分+50。拖放一个销毁举动。根据要执行的操作数量,如果将销毁举动放在它们之前,可能会出现题目。根据经验,我建议您将销毁举动放在末了。演员动作窗格应按照图 9-15 所示。

图 9-15。 50 pt cap action pane
100 pt 头

在 actor 编辑器中打开 100 pt cap actor。将“更改速率”举动拖放到演员中,并将设置更改为:
   
  创建一个新规则,并将条件设置为“到场者吸收事件”“与“到场者类型”“球拍”重叠或辩论”拖拽一个改变属性的举动,改变游戏。得分。分数+100。拖放破坏举动。演员动作窗格应按照图 9-16 所示。

图 9-16。 100 pt cap action pane
自动子弹

创建一个 Boolean 类型的游戏属性,将其命名为“AutoBullet”,并将默认值设置为 false。
在演员编辑器中打开自动项目符号演员。
将“更改速率”举动拖放到演员中,并将设置更改为:
   
  创建新规则,并将条件设置为“到场者吸收事件”“与“到场者类型”“球拍”重叠或辩论”拖放一个改变属性举动和改变游戏。AutoBullet 到 1。拖放破坏举动。演员动作窗格应该与图 9-17 中的相匹配。

图 9-17。 【自控动作面包】
子弹

在执行元编辑器中打开项目符号执行元。将“更改速率”举动拖放到演员中,并将设置更改为:
   
  创建一个新规则,并将“执行元吸收事件”“与类型为“Brick1”的执行元“重叠或辩论”以及“执行元吸收事件”“与类型为“Brick2”的执行元“重叠或辩论”的条件设置为“任何”拖放破坏举动。演员动作窗格应该与图 9-18 中的匹配。

图 9-18。 项目符号操作窗格
您现在需要编辑以下到场者:
   
  砖块 1

在 actor 编辑器中打开 Brick1 actor,并添加一个设置为“Any”的条件根据图 9-19 ,新规则是“执行元吸收事件”与“项目符号类型的执行元”发生“重叠或辩论”。

图 9-19。 修改 Brick1 规则
砖块 2

重复修改。在 actor 编辑器中打开 Brick2 actor,并添加一个设置为“Any”的条件根据图 9-20 ,新规则是“执行元吸收事件”与“项目符号类型的执行元”发生“重叠或辩论”。

图 9-20。 修改 Brick2 规则
球拍

在 actor 编辑器中打开球拍 Actor,创建一个新规则。条件是“属性”“游戏。AutoBullet”是“真的”拖放设置为“每”“1”秒的计时器举动。然后,拖放“繁殖演员”举动,并将设置修改为:
   
  拖放播放声音举动,并将设置更改为:
   
  新规则如图 9-21 所示。

图 9-21。 球拍新规
现在,您将在现场随机放置奖金。在场景编辑器中打开级别 1 场景。双击场景中的任意砖块。这将打开 actor 原型的实例。单击锁状图标编辑执行元的实例。修改实例只会修改场景中的这个实例,而不会修改所有演员。将 Spawn Actor 举动添加到实例的规则中,并将设置更改为:
   
  更新后的规则如图 9-22 所示。

图 9-22。 更新了砖块规则
用差别的砖块重复反复,演员如下:
   
  随机砖块上的 100 点上限和自动子弹实现如图图 9-23 和图 9-24 所示。

图 9-23。 100 点封顶实现

图 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 相干的举动:
   
  为了正确设置 Game Center 举动,您需要一个排行榜 ID。这将是张贴和表现分数所必需的。排行榜 ID 的创建将在第十一章的中介绍。您将得到一个唯一的字母数字 ID,将在以下步骤中使用。
登录游戏中央

打开BreakaWall-partII-step4.gameproj。打开家庭场景。在演员编辑器中选择家庭演员。
按照图 9-25 从专业选项卡中拖放一个“游戏中央-登录”举动。

图 9-25。 游戏中央举动
家庭演员如图图 9-26 所示。

图 9-26。 首页演员动作窗格
发布分数

在一场比赛中,会有两个关键时刻公布您的分数:
   
  输了之后公布比分

在演员编辑器中打开球演员。转到条件为“Attribute game.lives = 0”的规则。将“游戏中央–公布分数”举动拖放到规则中。要发布的属性是“game.Score”。输入您的排行榜 ID。你的屏幕应该看起来类似于图 9-27 (当然,有差别的排行榜 ID)。

图 9-27。 游戏输了公布比分
当你赢的时间公布分数

公布比分的最佳时刻是比赛获胜的时间。最终演员会正确地告诉你这是什么时间发生的。这个演员是重置游戏的控制。你需要在重置游戏前公布分数。
在演员编辑器中打开竣事演员。将“游戏中央–公布分数”举动拖放到规则中。要发布的属性是“game.Score”。输入排行榜 ID。屏幕应类似于图 9-28 中的。

图 9-28。 赢得游戏后公布分数
表现分数

在主页上,添加一个按钮来表现全球所有玩家的最高分数排行榜。
创建一个新的 actor,双击它打开 Actor 编辑器。用表 9-9 中的参数编辑演员属性。

单击 Images 选项卡表现图像资源,并将Leaderboard.png拖放到 actor 中。
在演员编辑器中打开演员。创建一个新规则,条件为“执行元吸收事件”“触摸”为“按下”然后拖放“Game Center–Show leader board”举动,并输入排行榜 ID 和分数的时间段(今天、本周或所有时间)。屏幕应类似于图 9-29 中的。

图 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 选择“底部”作为横幅位置。

图 9-30。 展示 iAd 举动
就如许!iAd 的一切都预备好了。真正的广告只有在应用发布后才会表现。
您可以通过打开名为BreakaWall-partII-step6.gameproj的文件来检查项目。
关于 iAd 的留意事项:
iAd 不是摇钱树。收入水平很低。在撰写本文时,《越狱》已被下载了约 1,400 次。到目前为止,iAd 收入低于 2 美元(见图 9-31 )。

图 9-31。 iAd 收入破墙
总结

在这一章中,你已经学习了许多新元素。你的游戏现在有一个开始屏幕,可以张贴分数到游戏中央。此外,你已经开始用 iAd 赢利了。这将大大增加游戏体验,并使您能够从游戏中得到收入。
在本章中,您学习了怎样:
   

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4