在拖放游戏中匹配物体

4
我正在开发一款教育游戏,用户会得到一些单词选项。目标是将这些单词拖动并按顺序排列成一句话。我已经为每个单词准备好了可拖动的平面,但我不确定如何判断用户是否已将单词拖动到句子的正确位置。
我想也许可以给每个单词分配一个ID/标签,并为每个平面分配一个相关的ID/标签。当两者碰撞时,我可以比较两个ID,如果它们匹配,则认为是成功放置。
我在想是否还有其他更好的解决方案,因为我不确定最佳的处理方法是什么?

你能提供更多的信息吗?单词的位置是与平面上的确切固定位置有关吗?它们不应该相互关联而不是与平面上的位置相关联(像链表中的链接词或拼图游戏中的连接词)? - Roberto
1个回答

1

你的想法很好,我不明白为什么不行。根据你的实现方式,如果有很多单词,你可能需要做很多工作,对吧?

我建议你这样做:创建一个预制体,包括两个碰撞器(及其相应的游戏对象)和一个脚本。一个碰撞器用于单词,另一个碰撞器用于正确位置。该脚本将从某个地方读取信息(资源xml、编辑器中的字段等),并应用单词的初始位置和“正确位置”碰撞器的位置。此脚本还将读取其他信息(如实际单词)并进行所有这些对象的配置。

这样,您可以轻松地将“单词预制体”拖到场景中,并单独配置它们。

此外,您可以在场景中拥有一个外部脚本,代表该“级别”(如果该概念适用于您的游戏...)。这里的想法是,此脚本可以在运行时加载该“级别”的预制体。它甚至可以传递所有数据以供预制体脚本配置对象,就像我之前说的那样。

我忘了说最重要的区别:使用此方法,您无需担心ID。它们属于同一游戏对象父级,因此您可以轻松地在脚本中检索所需的对象。


谢谢你的回答。如果我理解正确,我需要创建一个带有2个碰撞器和一个脚本的预制件。我已经创建了5个游戏对象(每个都附有一个单词的立方体...所以不是随机的),为它们添加了一个拖放脚本和5个白色平面(用于放置)。它们都有刚体和碰撞器。现在,你说我应该创建一个带有2个碰撞器的预制件。你的意思是我应该将这10个对象包含在我的预制件中吗? - caubry
由于拖放脚本已经附加到我的立方体上,因此我不需要在这个级别上担心。如果没有任何标签或ID,您将如何调用每个单独的对象?谢谢。 - caubry
嗨。我的想法是创建一个预制体,代表一个单词及其正确的位置,即一个带有单词的立方体和一个带有“正确位置”(平面)的游戏对象,因此有2个游戏对象,再加上一个控制这两个游戏对象的脚本和一个将它们作为父级的游戏对象(预制游戏对象)。由于它们属于同一个游戏对象父级(预制游戏对象),它们可以轻松地找到彼此(GetChild(),GetComponent()...),所以不需要使用ID。这是一种更加整体化、模块化的方法,可以帮助您构建许多关卡。 - Roberto
如果你的想法只是有一个层级(一个“短语”?一个场景),那么是否值得按照我的方式来做就成了一个有争议的问题。如果整个游戏只涉及5个词,那么标记对象并进行比较就足够了,并且实现起来最快。 - Roberto
好的,我明白了。我会尝试你的想法。 非常感谢。 - caubry

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接