我怎样才能创建一个"互动" Unity2d中的网格?

时间:2018-02-19 18:22:55

标签: c# unity3d

我是游戏开发的新手,我正在努力解决这个问题。我试图创建一个网格(让它称之为4x4),其中一个网格单元是"活动" (即让玩家在其上)并且我希望玩家能够点击相邻的单元格以将玩家移动到那里并将该单元格称为新的活动单元格。 是否最好以编程方式创建此网格,还是可以使用精灵?我假设我必须使用数组跟踪活动单元格,但Unity有没有办法为我做这个?另外,我如何确保玩家点击相邻的单元格呢?

1 个答案:

答案 0 :(得分:2)

Unity不会神奇地为你做这件事。虽然资产商店中可能存在专门提供此功能的内容,但实施起来并不复杂。

2建议方法
我将采用的方法是为数组提供一个中心位置,用于保存正方形的数据。方块需要知道它们在数组中的哪个索引,或者您需要一种基于物理坐标以数学方式计算它的方法。保持棋盘的中心位置还将跟踪玩家所在位置的索引。然后,您可以在单击图块时检查并查看图块的索引是否与播放器的索引相邻。如果您使用一维数组来跟踪正方形,您可以使用基本数学,例如从rowSize添加/减去index来检查其上方/下方和index % rowSize - 将其与零或rowSize-1以确保您的索引计算不会包裹板的左/右侧。您可以使用2D数组,但我发现1D更容易。我个人采用这种方法进行了几场棋盘游戏。它与网格的大小无关,如果您通过脚本动态生成板,则可以使用适当的索引标记方块。

另一种选择是使用光线投射。单击一个图块时,从该图块的中心向所有方向创建一个RayCast,看它是否会击中该播放器。

老实说,第二个解决方案听起来要简单得多,但我会采取第一种方法。通过这种方式,您可以更深入地了解电路板的状态以及更灵活地操作电路板的能力。