2012-03-30 65 views
4

我正在开发一个教育游戏,我给用户一个选择的单词。我们的目标是把这些单词放在一个句子中,通过单独拖动每个单词并将它们按顺序排列在提供的区域上。我有一架飞机准备好将每个单词拖动到上面,但我不确定如何确定用户是否将他们的单词拖到句子中的正确位置。在拖放游戏中匹配对象

我想也许我可以给每个单词一个ID /标签,以及每个平面的相关ID /标签。当两人碰撞时,我可以比较两个ID,如果它们匹配,则认为它是成功的放置。

我想知道是否有其他人有更好的解决方案,因为我不知道最好的方法去做这件事吗?

+0

你能提供更多信息吗?单词的放置与飞机上的固定位置有关吗?它们不应该是相互关联而不是在飞机上的位置(链接单词或像拼图游戏中的单词)? – Roberto 2012-03-31 00:44:27

回答

1

你的想法很好,我不明白为什么不。根据你如何实现这个,如果你有很多单词,你可以做很多工作,对吧?

我建议你这样做:制作一个由2个对撞机(及其各自的GameObjects)和一个脚本组成的预制件。一个对话框和一个正确位置的着色器。脚本会从某处读取(资源xml,编辑器中的字段等),并将该单词的初始位置和“正确位置”对撞机的位置应用。该脚本还将读取其他信息(如实际的单词)并对这些对象进行所有配置。

通过这种方式,您可以轻松地将'单词预制件'拖到您的场景中并单独配置它们。

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

我忘了说最重要的区别:在这种方法中,你不必担心ID的问题。它们属于同一个GameObject父级,因此您可以轻松地在脚本中检索想要的对象。

+0

感谢您的回答。如果我明白了,我需要用2个对撞机和一个脚本创建一个预制。我已经完成的任务是创建5个GameObjects(5个立方体,每个单词附加一个单词......所以不是随机的),为它们添加一个拖放脚本和5个白色平面(用于放置)。他们都有一个刚体,所以一个对撞机。现在,你说我应该创建一个带有2个对撞机的预制件。你的意思是我应该在我的预制件中包含这10个对象吗? – caubry 2012-03-31 10:11:15

+0

而且因为拖放脚本已经连接到我的立方体,并且不需要担心这个级别。 如何在没有任何标签或ID的情况下调用每个单独的对象? 谢谢。 – caubry 2012-03-31 10:11:40

+0

嗨。我的想法是创建一个预制件,用一个正确的位置表示一个单词,也就是说,一个单词带有单词和一个带有“正确位置”(平面)的游戏对象,所以需要2个游戏对象以及一个控制脚本那2个游戏对象和另外一个是他们父母(预制游戏对象)的游戏对象。由于它们属于同一个游戏对象父项(预制游戏对象),因此它们可以很容易地找到对方(GetChild(),GetComponent()...),因此不需要ID。这是一个更单一的模块化方法,可以帮助你建立很多层次。 – Roberto 2012-03-31 11:00:23