对于学校我正在创建一个基于图块的游戏。在这个游戏中我有一个矩阵,包含董事会的所有游戏对象。如果你选择一个带有单位的图块,我想要读取单位的范围,而不是在这个范围内突出显示它周围的图块,但我该怎么做呢?
int x和int y是网格中图块的位置。 单位是瓷砖上的单位。此方法用于获取单位的范围。
private GameObject[,] grid;
public void unitSelected(int x, int y, GameObject unit)
{
int rangeTiles = 0;
Units u = (Units)Enum.Parse(typeof(Units), unit.tag);
switch (u)
{
case Units.Lieutenent:
Debug.Log("Luitenant");
lieutenant lieut = unit.GetComponent<lieutenant>();
rangeTiles = lieut.Movement;
break;
case Units.Bom:
Debug.Log("Not yet implemented, Bom");
break;
}
getTiles(x, y, rangeTiles);
}
private void getTiles(int x, int y, int moves)
{
List<GameObject> moveTiles = new List<GameObject>();
}
如何获得selectedtile(int x,int y)的范围(移动)中的所有切片?
答案 0 :(得分:1)
我还没有测试过,但你的循环看起来应该是这样的。
private void getTiles(int x, int y, int moves)
{
List<GameObject> moveTiles = new List<GameObject>();
// sweep through horizontally
for (int i = -moves; i <= moves; i++)
{
// at each step horizontally, sweep vertically as far as allowed
int jRange = moves - Math.Abs(i);
for (int j = -jRange; j <= jRange; j++)
{
// add (i + x, j + y) to moveTiles, maybe skip when (i, j) = (0, 0)?
}
}
}
正如谢尔盖的回答所说,记得做范围检查,因为瓷砖不在网格内。