我是Unity的菜鸟。有人可以帮我吗?所以。我在板子9x12单元上有2个或更多字符。如果我触摸角色,他附近的单元(左,右,后,左后,右后,前,左前,右前)必须更改颜色并激活。然后,如果我触摸一些激活的单元格,则角色必须与正在运行的动画一起运行才能触摸到单元格。如果我触摸未激活的单元格,则角色必须保持在其位置上。如果角色2停留在角色1附近的单元格上并且我触摸了角色1,则必须激活角色1附近的单元格并更改颜色,除了巫婆停留在角色2上的单元格。我的英语很差,这必须显示我想要的。 https://youtu.be/FRwIreenNx8
按照我的逻辑: 1.触摸字符 2.检查其他字符是否最近的8个单元忙 2.1不忙则细胞变色 2.2繁忙则细胞不变色 3.仅在不忙的单元格上触摸可用 4.使用移动动画移动到触摸的单元格位置 5.对所有字符使用此逻辑
谢谢
答案 0 :(得分:1)
您要问的是一个比较广泛的问题。但这是解决方案的一部分。
您可以在其中包含单元格的情况下使用2D阵列。
2D数组有点像坐标系。
它可能看起来像这样
[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.
}
如果您还有一个管理器类,其中包含所有单元格。然后,当单击一个单元格时,可以将其发送到manager类,获取所有周围单元格的集合并处理是否应激活它们。
如果单元格上当前有一个对象(CurrentlyOnCell不为null),则不应激活该对象。
要坚持逻辑步骤:
进一步阅读:
2D数组:https://www.tutorialspoint.com/csharp/csharp_multi_dimensional_arrays.htm
评论
我上面的建议并不是最终的解决方案,它旨在激发您如何解决您提到的任务的想法。
我建议您分解您想做的事情,以免一次做太多事情。
不要尝试一次对所有单元进行动画处理,移动和激活。当您不熟悉Unity时,尝试一次尝试将变得太大。
这里是一些要考虑的步骤。最好将其分解为简单的动作,而不是想一次做很多复杂的事情。
祝您在以后的学习过程中好运。