如何在Unity Turn base中移动

How in Unity Turn base move

我是 Unity 的菜鸟。有人可以帮我吗?所以。我在 9x12 单元板上有 2 个或更多字符。如果我触摸角色,他附近的单元格(左、右、后、左后、右后、前、左前、右前)必须改变颜色并激活。然后如果我触摸一些激活的单元格,角色必须 运行 和 运行ning 动画到触摸的单元格。如果我触摸未激活的单元格,角色必须留在他的位置上。如果角色 2 停留在角色 1 附近的单元格上并且我触摸角色 1,则角色 1 附近的单元格必须激活并改变颜色,除了 上的单元格停留在角色 2 上。我的英语很差,这一定是我想要的. https://youtu.be/FRwIreenNx8

所以按照我的逻辑: 1.触摸字符 2.检查最近的8个小区是否被另一个字符占线 2.1 不忙则单元格变色 2.2 忙则单元格不变色 3.只在不忙的单元格上触摸可用 4.使用移动动画移动到触摸的单元格位置 5.对所有字符使用此逻辑

谢谢

你问的是一个比较宽泛的问题。但这是解决方案的一部分。

你可以有一个包含单元格的二维数组。

二维数组有点像坐标系

它可以看起来像这样

[0,0][1,0][2,0]
[0,1][1,1][2,1]
[0,2][1,2][2,2]

然后每个单元格都可以容纳一个对象。

该对象可能如下所示:

Cell{

public Transform CurrentlyOnCell; //<- this is the player, if null then no one is there.
public int x; //cell x coordinate.
public int y; //cell y coordinate.

}

如果您还有一个管理员 class 负责管理所有单元格。然后,当单击一个单元格时,您可以将其发送给管理器 class,获取所有周围单元格的集合并处理它们是否应该激活。

如果单元格上当前有对象(CurrentlyOnCell 不为空),则不应激活。

坚持你的逻辑步骤:

  1. 触摸角色应该从被触摸的对象中获取本地单元格脚本(这可以通过光线投射来完成)。
  2. 您可以通过将该单元格脚本发送给了解所有单元格的管理员来检查最近的 8 个单元格。经理然后根据给定的单元格坐标检查哪些是周围的。
  3. 如果 "Transform" 变量不为空,则可以将小区指定为忙。那应该是激活不了。
  4. 运动和动画是独立的主题,可以用不同的方式制作。我建议你 google 这个。但基本上你的角色应该只被允许移动到有 space.
  5. 的地方
  6. 如果您在 Unity 中将脚本应用到多个角色,该脚本应该可用于多个角色。

进一步阅读:

二维数组:https://www.tutorialspoint.com/csharp/csharp_multi_dimensional_arrays.htm


评论

我上面的建议不是一个完整的解决方案,它是为了启发你如何解决你提到的任务。

我会建议你分解你想做的事情,这样你就不会一次拿太多东西。

不要尝试同时设置动画、移动和激活单元格。当你刚开始使用 Unity 时,它会变得太大,你无法一次尝试。

以下是一些需要考虑的步骤。最好把它分解成简单的行为,而不是想一次做很多复杂的事情。

  1. 了解如何在单击单元格时找到它(查找光线投射)。
  2. 了解如何获取该单元格周围的单元格。
  3. 了解如何激活正确的细胞。
  4. 了解如何再次停用周围的细胞。
  5. 了解如何将游戏对象移动到该单元格,然后停用周围的单元格。
  6. 了解如何使用动画。
  7. 了解如何在移动时应用动画以及在停止移动时停止动画。

祝你在以后的学习过程中好运。