Unity2D沿网格线移动

问题描述 投票:0回答:1

我正在做一个本质上是在Unity 2D内的棋盘游戏。玩家将能够沿着一个网格移动他们的棋子(见下图)。较大的圆形精灵是棋子,玩家可以点击它,然后点击一个网格点(小方块)来移动到它。

enter image description here

我通过在每个交叉点使用空的游戏对象(我已经在它们上渲染了一个精灵以提供视觉帮助)来创建网格。这些都是玩家可以在其中移动的点。点与点之间的距离不同,但水平距离总是1。

完整的功能是...

  1. 玩家点击一个棋子。
  2. 显示棋子可以移动到的预览区域。
  3. 玩家点击棋子应该移动到的有效网格点。
  4. 网格棋子移动到新点。

首先,我的创建方式是否正确?我需要这个网格是准确的,因为它将被填充一个准确的天空地图。目前这个网格是准确的。

假设这样做是正确的,那么当一个棋子被选中时,我如何计算出哪些网格点在范围内?比如说一个棋子可以移动4个空格,那么离原点4个格子点(水平、垂直和对角线)的任何空格都可以移动到。我还需要计算这个棋子移动了多少个空格。

我还需要让棋子从原来的位置到新的格点,通过格点使用最短的路线。

希望得到任何帮助。

c# unity3d
1个回答
0
投票

好了,有很多解决方案,但让我们保持简单!!简单概述你的解决方案步骤!!!。

  • 如果你的网格是固定大小的(即固定高度和宽度统一长度),那么在交点处放上自定义占位符(空的游戏对象)。
  • 从当前的tapping piece到方向的滑动检测(假设你正在使用这个机制)。
  • 使用任何tween库(我建议使用unity asset store中的DoTween库,它是免费的,而且绝对是惊人的。)将你的作品移动到那个占位符。

现在有点更深入的理解!请参考以下参考资料。

  • 任何类型的网格的初始条件
  • 在创建网格后,你可以把空的gameobject作为网格之间的占位符(你可以让它不可见,即让它成为图像属性的alpha 0!)。
  • 在网格的间隙中放置占位符
  • 你可以让你的棋子(玩家)成为任何这些占位符的孩子。
  • 你会检测到滑动甚至点击的机制,并检查你交换的方向或你点击的隐形占位符是否有子代?
  • 如果有,那就意味着这个占位符已经被其他棋子(玩家)占据了,所以没有逻辑去移动你当前的棋子,所以不要理会滑动。
  • 如果没有,意味着占位符是空的,所以它的移动是有效的。
  • 使用任何一个Tween库,从当前占位符的位置移动到所需的占位符,移动你的棋子(玩家)。
  • 到达期望的占位符后,使该棋子成为该期望占位符的子棋(使用setparent(desirableplaceholder.gameobject.transform.position)之类的代码)

和你做!!!!!!!!!!!!!!!!!

希望对你有帮助!

© www.soinside.com 2019 - 2024. All rights reserved.