pokon548's 博客

探索微创新,为发烧而生

用 Arcade 学习写一款 RPG 游戏 —— 与场景发生交互

pokon548's Avatar 2019-08-10

  1. 1. 找到上一章 Arcade 的代码
  2. 2. 更多样化的地图
    1. 2.1. 添加绿色色块
    2. 2.2. 将绿色色块赋予小草的材质
  3. 3. 让小草能够与主人公互动
    1. 3.1. 检测靠近 —— 当碰撞时
    2. 3.2. 红色的“按钮”
    3. 3.3. 蓝色的“按钮”
    4. 3.4. 灰色的区域
  4. 4. 将方块留在原地!不要拖
  5. 5. 让主角说话
  6. 6. 最后一个选项的作用
    1. 6.1. 一片空白?主人公说的话呢
  7. 7. 实例代码
  8. 8. 小结

上一篇文章中,我们绘制了主人公周围的场景。不过为了推进游戏进度,我们还需要主人公能够与环境中的某些元素发生交互关系。那么,今天我们就来试试做出这个功能吧!

找到上一章 Arcade 的代码

之后的每一次博文,除非另有说明,都会使用到上一次遗留下的项目。请妥善保管好。那么,现在就在 Arcade 主页里找到并点开它吧!

更多样化的地图

在上一次博文中,我们只在模板里用粉色构成了地图的模板。事实上,模板里最多可以容纳十六种颜色所对应的色块。不同的色块可以对应不同的材质和不同的功能。
在这一片博文中,为了示范,我们将用到绿色的新色块来增添一个“会和主角互动的小草(???)”。

添加绿色色块

那么,我们先找到之前的地图模板,并点开它。
深度录屏Navigator20190810120901.gif

为了添加绿色色块,我们需要更换画笔的颜色,并在地图的某一个位置点上绿色色块。如之前那样,色块的位置是随意的。只要你不点在主角出现的位置(地图中央)就好。
深度录屏选择区域20190810121350.gif

OK。点好了。别忘记点击“完成”保存模板。

将绿色色块赋予小草的材质

通过上一章的学习,这一步操作应该很简单了吧。就不再多说了。最后的结果应该和下图是一样的。
深度截图选择区域20190810121903.png

然后,将其附加到粉色色块赋予材质的方块的后面。
深度录屏选择区域20190810122016.gif

现在点击播放按钮看看,小草是不是出现了呢?
深度截图选择区域20190810122211.png

让小草能够与主人公互动

现在的小草,只是一个没有生气的材质而已。而我们想要实现的目标是:与主人公发生互动。
为了让小草能够与主人公互动,我们要先让 Arcade 能够检测到”主角靠近了小草“这一动作。

检测靠近 —— 当碰撞时

检测碰撞这事在游戏里很常见。举个例子:在游戏中,如果来自敌方的子弹“碰”到了主人公的身上,游戏就会检测到这一行为,从而让主人公扣血或者 GG 等。这种事在设计类游戏中更是屡见不鲜。
当然,在这篇博文中,我们不会涉及到那么复杂的碰撞检测。pokon548 在初学期间,秉承“抓大放小”的原则:即在初学阶段先学好知识主干,细枝末节的东西等到学完了之后再快速补充就好。
说了那么多,我们先开始实践吧。

为了让 Arcade 能够检测到主人公靠近小草的动作,我们要在“场景”分区内找到这么一个方块,并将其拖出来。
深度录屏选择区域20190810123013.gif

这个方块看起来似乎更加复杂了。但是没关系,pokon548 下面的比较详细的介绍相信能让你明白它各个组成部分的重要作用。

红色的“按钮”

这代表着当碰撞事件发生之后,我们在这个方块内部可以引用到的精灵对象。不知道对象是什么?那好,这里稍微详细的介绍一下。
对象,在面向对象编程方法里,代表模板的实例。什么意思呢?就拿基因和生物之间的关系做比好了(虽然不是特别恰当,但是有助于你理解这一概念)。要产生生物,就必须要有基因作为生物的模板,通过一系列步骤,合成各种各样的蛋白质,最终组成了生物。在这里,生物就是基因的实例。基因本身虽然不是生物,但它定义好了生物的一切行为,是一个模板。而由这个模板翻译而来的生物,就叫做对象。
哈?还是不懂?没关系那就忽略吧。这不重要 :)。在这个简单的实例中,我们不会用到这个东西,无须过于担心。保持默认值就好。

蓝色的“按钮”

这代表着触发事件的精灵的类别。在这里,我们想要类别“玩家”去发生这一动作,故保持默认的“Player”类别即可。

灰色的区域

又见面了!在这个地方,它代表着能够和主人公发生互动的色块颜色。我们想要的是绿色色块代表的“小草”与主人公发生互动,故这里我们要将其改为绿色色块。
怎么操作?相信已经精通前一章的你知道怎么操作了吧!啥不知道?…好吧,再演示一遍。记在小本本上了啊要考的
深度录屏选择区域20190810124420.gif

好了,这样 Arcade 就能检测到主人公靠近小草的这一行为了。

将方块留在原地!不要拖

你也许会说:哎接下来是不是要把这个方块拖动到绿色的“当开机时”方块里去啊?这就不对了。事实上,这个方块我们不需要拖动。留在原地就可以了。
为啥呢?其实只要原理讲明白你就懂了。还记得这个方块的动作是啥么?是“当主角碰到小草时,要…”。这个动作不是在开机时要完成的“初始化动作”,而是在游戏进行时会随时发生的事件。很显然,这不是一个初始化操作,而是一个“动作接收”的操作。哈?云里雾里?没关系的啦,看看编程相关的书籍你就知道了(好吧,其实只是因为 pokon548 修行不高,没法解释的特别清楚)。
故我们将其留在原地,不是没有道理。相反,很符合逻辑。

让主角说话

为了检测我们这一方块是否生效,我们要让这个事件发生的时候做点事情。做些什么好呢?…有了,让主角说一句“啊小草”(??)吧。
为了完成这一动作,我们要从“精灵”板块里找到这个方块,并将其拖到灰色方块内。
深度录屏选择区域20190810125938.gif

这个方块看起来很友好。为了让主人公成功表白说话,我们需要更改”:)”为”啊小草”。
深度录屏选择区域20190810130137.gif

好了,这样应该就好了。让我们点一下“播放键”,并用方向键移动主角到小草上,看看效果吧!…哎怎么不行呢?
深度录屏选择区域20190810130336.gif

最后一个选项的作用

这是怎么回事呢?你一定会想。是不是 pokon548 菜的一笔啊才不是呢。事实上,我们一直忽略了一个选项。而这个选项,是这个问题的根源。
什么选项呢?还记得上一章里面定义色块对应材质的时候的那个方块吗?想不起来了?没关系,这里再把图贴上来。
这里

就是这个方块的最后一个选项。pokon548 先不说作用,你先按照下面的步骤把有绿色色块的那个后面的选项点成“开”试试。
深度录屏选择区域20190810130825.gif

之后,再运行项目看看。是不是就可以了?
深度录屏选择区域20190810131047.gif

一片空白?主人公说的话呢

截止到目前,Arcade 正式版里还没有完善对于中文的支持。但是在 Beta 版里面已经可以了。
要访问 Beta 版并查看实际效果,只需要访问这个链接即可:点我
以下部分是在 Beta 版里运行项目的结果。
深度录屏选择区域20190810131402.gif

这么神奇?实际上很简单。这个选项的作用就类似于“把虚拟变现实”:把这个色块对应的景物独立出来,使之能够与主人公发生交互。这个选项就起怎么个作用。
怎么样,感觉是不是挺好的?

实例代码

注意:如果要查看主人公说出的话,请在 Beta 版本下运行这个项目。

小结

通过本章的学习,你应该知道:

  • 如何在模板中添加更多元素。
  • 如何让场景中的元素和主角互动。
  • 如何使用 Beta 版的 Arcade。

虽然说 Beta 版有时可以帮我们解决不少问题,但是请注意:Beta 版并不是万能的。在一些正式版可以工作的特性 Beta 版里可能就会损坏,带来一些不可知的问题。因此,一般情况下,在本博文中,pokon548 建议你使用 Arcade 的正式版。

本作品采用知识共享署名 3.0 中国大陆许可协议进行许可。您可以在遵守此协定的前提下对本文进行再发布、分享、修改等。

本文最后更新于 天前,文中所描述的信息可能已发生改变