我是游戏开发的新手,我正在为这个概念而苦苦挣扎。我正在尝试创建一个网格(我们称之为 4x4),其中一个网格单元格是“活动的”(即有玩家在上面),我希望玩家能够点击相邻的单元格将玩家移动到那里并将该单元格称为新的活动单元格。
最好以编程方式创建这个网格还是我可以使用精灵?我假设我必须使用数组来跟踪活动单元格,但是 Unity 有没有办法为我做到这一点?另外我如何确保玩家正在点击相邻的单元格?
Unity 不会神奇地为您做到这一点。尽管资产商店中可能有一些专门提供此功能的东西,但您自己实现它并不复杂。
2 建议
的方法 我将采用的方法是为保存正方形数据的数组设置一个中心位置。方块需要知道它们在数组中的索引,或者您需要一种方法来根据它们的物理坐标进行数学计算。放置棋盘的中心位置还将跟踪玩家所在位置的索引。然后,您可以在单击一个图块时,检查该图块的索引是否与玩家的索引相邻。如果你使用一维数组来跟踪的平方,你可以使用基本的数学运算,如添加/减去rowSize
从index
检查立即高于/低于它,index % rowSize
-它比较为零或rowSize-1
确保您的指数计算不会覆盖板的左侧/右侧。您可以为此使用 2D 数组,但我发现 1D 更容易做到这一点。我个人在几个棋盘游戏中采用了这种方法。它独立于网格的大小,如果您通过脚本动态生成板,很容易用适当的索引标记方块。
另一种选择是使用光线投射。当一个图块被点击时,从该图块的中心向各个方向创建一个 RayCast,看看它是否击中了玩家。
老实说,第二种解决方案听起来简单得多,但我会采用第一种方法。这样您就可以更深入地了解棋盘的状态以及以更大的灵活性操纵棋盘的能力。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句