拖放“制作”系统

607次阅读
没有评论

共计 2256 个字符,预计需要花费 6 分钟才能阅读完成。

拖放“制作”系统

游戏中的制作呈现出许多不同的伪装。在本教程中,我将介绍一个受游戏启发的拖放样式系统小炼金术。简而言之,这个制作系统允许您将一个对象拖动到另一个对象上,如果这两个对象兼容,它将创建新的东西。

若要重新创建此项目,需要满足以下条件:To recreate this project,you’ll need the following:

对象

Array – 此项目中的数组对象 aCollidingItems 存储来自合并过程中使用的重叠项的数据。

AJAX – 需要将 JSON 项目文件添加到 JSON 对象。

浏览器 – 这主要用于调试

物品精灵 – 精灵具有拖放和绑定到布局行为,允许玩家在游戏屏幕上移动它们以进行“制作”。精灵也属于一个名为“items”的族,有两个实例变量:ID(字符串)和 Used(布尔值)。

JSON – JSON 对象包含项目文件,其中包含物品数据和制作配方。

键盘 – 用于在游戏区域中生成新物品

文本 – 两个文本对象在运行时显示项目列表和配方列表。这对于游戏来说不是必需的,但可以方便地检查您的食谱是否正常工作!

在布局视图中,你的 Text 对象可以放在任何地方,因为它只是显示一些数据 – 你实际上并不需要它来使游戏运行。您真正需要添加到布局中的只是一堆 Item 对象。确保设置它们的实例变量和初始动画,否则最终将导致每个对象都是相同的项目!

全局变量

该项目使用七个全局变量来跟踪各种数据。从跟踪重叠开始:

DragItemUID 和 OverlapItemUID 用于存储播放器当前拖动的项的 UID 以及放置时重叠的项的 UID。

其余 5 个实例变量 ID1、ID1Valid、ID2、ID2Valid 和 ResultID 都参与制作过程。

在我们深入研究实际事件之前,我将花点时间查看一下“Items”项目文件。此 JSON 文件存储有关每个单独项目的数据以及指示哪些项目可以组合的配方。

项目和配方都存储在 JSON 文件中的数组中,然后在事件表中的各个点引用该数组。“项目”部分存储项目的 ID、显示名称、动画名称和动画帧。在此示例中,我们的动画只是单帧,因此并未真正使用动画帧,但它是一个不错的选择。
拖放“制作”系统
JSON 文件中的第二个数组存储配方,这些配方定义了哪些项目可以组合以产生其他东西。配方被简单地定义为 ID1、ID2 和 ResultID – 在制作时,如果两个重叠的物品与 ID1 和 ID2 匹配,则会生成一个与 ResultID 匹配的新物品。
拖放“制作”系统

启动

在项目开始时,首先触发的是调用 JSON 项目文件的 AJAX 请求。然后,将其解析为 JSON 对象,并将其内容写入两个文本对象中,以便它们在运行时可见。如前所述,这对于游戏的运行并不是必需的,但更像是一种调试——它至少有助于让食谱可见,这样你就可以看到它们是否有效!
拖放“制作”系统

制作 / 组合的工作原理

为了制作一些东西,玩家必须将一个物体拖到另一个物体上。如果对象的 ID 与配方中的 ID 匹配,则创建新对象。

当玩家开始拖动项目时,其 UID 存储在全局变量 DragItemUID 中。当物品被丢弃时,游戏会设置数组 aCollidingItems 的大小,以准备进行配方检查。如果在删除项时,它与另一个项实例重叠,则第二个项的 UID 将存储在 OverlapItemUID 中,并且两个 ID(来自存储在项上的实例变量)都将添加到数组中。
拖放“制作”系统

item sprite 位于 family ‘items’ 中的原因是为了让能够区分拖动的实例和它重叠的实例。
填充数组后,通过调用函数来完成配方检查。该函数处理组合过程中的所有检查、项目创建和销毁。

这是一个相当大的功能,所以如果解释有点复杂,请原谅我。它必须遍历 JSON 文件和数组,以将拖动 / 重叠的项目与配方列表进行比较。

示例文件充满了 Browser 对象操作,这些操作将函数的各个方面记录到浏览器控制台中。这仅用于调试,我不会在本教程中解释它,因为它不会影响游戏的机制。
从 JSON 文件中的 For Each 循环开始,我们通过重置 ID 有效性检查布尔值来开始配方检查,以确保检查从头开始。

然后,该函数遍历 aCollidingItems 数组。如果数组中存储的任一 ID 与配方中成分的其中一个 ID 匹配,则相应的 ID 有效性检查布尔值设置为 true。例如,如果数组值与配方中的第一个 ID 匹配,则 ID1Valid 设置为 true。
拖放“制作”系统

如果两个有效性检查布尔值都为真,则配方已匹配,可以开始组合过程。首先,将相应的配方结果存储到 ResultID 全局变量中。为了帮助确保仅销毁组合中使用的对象,我们然后选择 UID 与 DragItemUID 和 OverlapItenUID 匹配的两个对象,并将其实例变量 Used 设置为 true。

然后,该函数遍历 JSON 文件中的 items 数组,以检索适当的信息,从而从配方中生成正确的结果。生成一个新的 Item 实例,并相应地设置其 ID 实例变量、动画和动画帧。

最后要做的是破坏组合过程中使用的两种成分。为此,我们选择所有已使用的 Item 实例,如果它们的 ID 与 ID1 或 ID2 匹配,则这些实例将被销毁。
拖放“制作”系统

物品生成

该项目还包括一种在游戏布局中生成新项目的方法,在此示例中,这主要是为了调试目的。但从本质上讲,JSON 文件中有 10 个项目,键盘上有 10 个数字键。因此,当按下其中一个键时,将生成 ID 与键匹配的项目。它的 ID 实例变量在生成后设置,动画帧也是如此,以确保在布局中创建正确的项目。

这是一个非常基本的物品生成实现(我添加了更多用于测试,但我想我会保留它),但相对容易适应 – 你可以尝试有一个不可见的层,其中包含每个项目的一个实例,当点击时,它会在游戏屏幕中生成该项目。

正文完
 0
评论(没有评论)