我想突出显示放置在六角形瓦片系统中的单元范围内的图块。例如,如果我在6 | 5上放置一个范围为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
{
[...]
}
}
}
但随着范围,复杂性也增加了......必须有一个更好的办法。有任何想法吗?
此外,这篇文章可能是值得拥有看看:[Naidamast](https://www.codeproject.com/Articles/1119973/Part-I-Creating-a-Digital-Hexagonal-瓦图) – MartinB