【发布时间】:2017-09-01 20:59:32
【问题描述】:
我想突出显示放置在六边形瓷砖系统中的单位范围内的瓷砖。例如,如果我在 6|5 上放置一个 range=2 的单位,我想突出显示 5|4、6|4、7|4、7|5、6|6、5|5、4|5、4| 4、5|3 等等...
如何根据原点坐标和范围计算这些坐标?目前我使用许多 if 子句来检查每一种可能性:
if (gameField[x, y].IsHighlighted && gameField[x, y].DeployedUnit != null)
{
if (gameField[x, y].DeployedUnit.AttackRange > 0)
{
if (x % 2 == 0)
{
if (x > 0 && y > 0)
{
gameField[x - 1, y - 1].IsGreenRange = true;
}
if (x > 0)
{
gameField[x - 1, y].IsGreenRange = true;
}
if (y < height - 1)
{
gameField[x, y + 1].IsGreenRange = true;
}
if (x < length - 1)
{
gameField[x + 1, y].IsGreenRange = true;
}
if (x < length - 1 && y > 0)
{
gameField[x + 1, y - 1].IsGreenRange = true;
}
if (y > 0)
{
gameField[x, y - 1].IsGreenRange = true;
}
}
else
{
[...]
}
}
}
但是随着范围的增加,复杂性也在增加……必须有更好的方法。有什么想法吗?
【问题讨论】:
标签: c# monogame hexagonal-tiles