【发布时间】:2019-10-30 07:26:20
【问题描述】:
它适用于大多数情况:
当高度远大于宽度(3x9、3x11、5x11 等)时,问题就开始了
如您所见,第一行不合适,进一步增加高度将重复此模式。
这里是代码(注意:我的立方体坐标的 z 和 y 被交换了):
void SpawnHexGrid(int Width, int Height)
{
int yStart = -Height / 2;
int yEnd = yStart + Height;
for (int y = yStart; y < yEnd; y++)
{
int xStart = -(Width + y) / 2;
int xEnd = xStart + Width;
if (Width % 2 == 0)
{
if (y % 2 == 0)
{
xStart++;
}
}
else
{
if (y % 2 != 0)
{
xStart++;
}
}
Debug.Log("y: " + y + " , Start: " + xStart + " , End: " + xEnd);
for (int x = xStart; x < xEnd; x++)
{
SetHexagon(new Cube(x, y));
}
}
}
编辑:
更改为@Idle_Mind 解决方案后,我的网格如下所示:
再次编辑:
我找到了解决方案,改成@Idle_Mind 的解决方案后,我再次使用 y 纠正了倾斜:
int xStart = -Width / 2 - (y / 2);
但这引起了与以前类似的问题,但这次我意识到它与 int 的四舍五入方式有关,当 y 为负时 xStart 会比预期低 1,所以只要 y 是我就加 1否定:
int add = 0;
if (y < 0)
{
add = 1;
}
int xStart = -Width / 2 - ((y - add) / 2);
现在这就像一个魅力,谢谢大家。
【问题讨论】:
标签: c# hexagonal-tiles