用 Arcade 学习写一款 RPG 游戏 —— 与场景发生交互
在上一篇文章中,我们绘制了主人公周围的场景。不过为了推进游戏进度,我们还需要主人公能够与环境中的某些元素发生交互关系。那么,今天我们就来试试做出这个功能吧!
找到上一章 Arcade 的代码⌗
之后的每一次博文,除非另有说明,都会使用到上一次遗留下的项目。请妥善保管好。那么,现在就在 Arcade 主页里找到并点开它吧!
更多样化的地图⌗
在上一次博文中,我们只在模板里用粉色构成了地图的模板。事实上,模板里最多可以容纳十六种颜色所对应的色块。不同的色块可以对应不同的材质和不同的功能。 在这一片博文中,为了示范,我们将用到绿色的新色块来增添一个“会和主角互动的小草(???)”。
添加绿色色块⌗
那么,我们先找到之前的地图模板,并点开它。
为了添加绿色色块,我们需要更换画笔的颜色,并在地图的某一个位置点上绿色色块。如之前那样,色块的位置是随意的。只要你不点在主角出现的位置(地图中央)就好。
OK。点好了。别忘记点击“完成”保存模板。
将绿色色块赋予小草的材质⌗
通过上一章的学习,这一步操作应该很简单了吧。就不再多说了。最后的结果应该和下图是一样的。
然后,将其附加到粉色色块赋予材质的方块的后面。
现在点击播放按钮看看,小草是不是出现了呢?
让小草能够与主人公互动⌗
现在的小草,只是一个没有生气的材质而已。而我们想要实现的目标是:与主人公发生互动。 为了让小草能够与主人公互动,我们要先让 Arcade 能够检测到”主角靠近了小草“这一动作。
检测靠近 —— 当碰撞时⌗
检测碰撞这事在游戏里很常见。举个例子:在游戏中,如果来自敌方的子弹“碰”到了主人公的身上,游戏就会检测到这一行为,从而让主人公扣血或者 GG 等。这种事在设计类游戏中更是屡见不鲜。 当然,在这篇博文中,我们不会涉及到那么复杂的碰撞检测。pokon548 在初学期间,秉承“抓大放小”的原则:即在初学阶段先学好知识主干,细枝末节的东西等到学完了之后再快速补充就好。 说了那么多,我们先开始实践吧。
为了让 Arcade 能够检测到主人公靠近小草的动作,我们要在“场景”分区内找到这么一个方块,并将其拖出来。
这个方块看起来似乎更加复杂了。但是没关系,pokon548 下面的比较详细的介绍相信能让你明白它各个组成部分的重要作用。
红色的“按钮”⌗
这代表着当碰撞事件发生之后,我们在这个方块内部可以引用到的精灵对象。不知道对象是什么?那好,这里稍微详细的介绍一下。 对象,在面向对象编程方法里,代表模板的实例。什么意思呢?就拿基因和生物之间的关系做比好了(虽然不是特别恰当,但是有助于你理解这一概念)。要产生生物,就必须要有基因作为生物的模板,通过一系列步骤,合成各种各样的蛋白质,最终组成了生物。在这里,生物就是基因的实例。基因本身虽然不是生物,但它定义好了生物的一切行为,是一个模板。而由这个模板翻译而来的生物,就叫做对象。 哈?还是不懂?没关系那就忽略吧。这不重要 :)。在这个简单的实例中,我们不会用到这个东西,无须过于担心。保持默认值就好。
蓝色的“按钮”⌗
这代表着触发事件的精灵的类别。在这里,我们想要类别“玩家”去发生这一动作,故保持默认的“Player”类别即可。
灰色的区域⌗
又见面了!在这个地方,它代表着能够和主人公发生互动的色块颜色。我们想要的是绿色色块代表的“小草”与主人公发生互动,故这里我们要将其改为绿色色块。 怎么操作?相信已经精通前一章的你知道怎么操作了吧!啥不知道?…好吧,再演示一遍。记在小本本上了啊要考的
好了,这样 Arcade 就能检测到主人公靠近小草的这一行为了。
将方块留在原地!不要拖⌗
你也许会说:哎接下来是不是要把这个方块拖动到绿色的“当开机时”方块里去啊?这就不对了。事实上,这个方块我们不需要拖动。留在原地就可以了。 为啥呢?其实只要原理讲明白你就懂了。还记得这个方块的动作是啥么?是“当主角碰到小草时,要…”。这个动作不是在开机时要完成的“初始化动作”,而是在游戏进行时会随时发生的事件。很显然,这不是一个初始化操作,而是一个“动作接收”的操作。哈?云里雾里?没关系的啦,看看编程相关的书籍你就知道了(好吧,其实只是因为 pokon548 修行不高,没法解释的特别清楚)。 故我们将其留在原地,不是没有道理。相反,很符合逻辑。
让主角说话⌗
为了检测我们这一方块是否生效,我们要让这个事件发生的时候做点事情。做些什么好呢?…有了,让主角说一句“啊小草”(??)吧。 为了完成这一动作,我们要从“精灵”板块里找到这个方块,并将其拖到灰色方块内。
这个方块看起来很友好。为了让主人公成功表白说话,我们需要更改”:)”为”啊小草”。
好了,这样应该就好了。让我们点一下“播放键”,并用方向键移动主角到小草上,看看效果吧!…哎怎么不行呢?
最后一个选项的作用⌗
这是怎么回事呢?你一定会想。是不是 pokon548 菜的一笔啊才不是呢。事实上,我们一直忽略了一个选项。而这个选项,是这个问题的根源。 什么选项呢?还记得上一章里面定义色块对应材质的时候的那个方块吗?想不起来了?没关系,这里再把图贴上来。
就是这个方块的最后一个选项。pokon548 先不说作用,你先按照下面的步骤把有绿色色块的那个后面的选项点成“开”试试。
之后,再运行项目看看。是不是就可以了?
一片空白?主人公说的话呢⌗
截止到目前,Arcade 正式版里还没有完善对于中文的支持。但是在 Beta 版里面已经可以了。 要访问 Beta 版并查看实际效果,只需要访问这个链接即可:点我 以下部分是在 Beta 版里运行项目的结果。
这么神奇?实际上很简单。这个选项的作用就类似于“把虚拟变现实”:把这个色块对应的景物独立出来,使之能够与主人公发生交互。这个选项就起怎么个作用。 怎么样,感觉是不是挺好的?
实例代码⌗
注意:如果要查看主人公说出的话,请在 Beta 版本下运行这个项目。
小结⌗
通过本章的学习,你应该知道:
- 如何在模板中添加更多元素。
- 如何让场景中的元素和主角互动。
- 如何使用 Beta 版的 Arcade。
虽然说 Beta 版有时可以帮我们解决不少问题,但是请注意:Beta 版并不是万能的。在一些正式版可以工作的特性 Beta 版里可能就会损坏,带来一些不可知的问题。因此,一般情况下,在本博文中,pokon548 建议你使用 Arcade 的正式版。