gpt4 book ai didi

c# - 嵌套 For 循环 - 在 Unity 中生成卡坦风格的六角网格

转载 作者:太空宇宙 更新时间:2023-11-03 16:04:32 29 4
gpt4 key购买 nike

如标题所示,我正在尝试使用 C# 在 Unity 中生成一个程序化的六角网格。

void Start () 
{
//5 mid
startRowSize = 5;

for (int i = 0; i < startRowSize; i++)
{
GameObject newHex = (GameObject)Instantiate(hex);
hexWidth = newHex.gameObject.renderer.bounds.size.z;
newHex.transform.Rotate(new Vector3(0,30,0));
newHex.transform.position = new Vector3((i * hexWidth),0,0);
}

for (int row = 0; row <= startRowSize-1; row ++)
{
for (int i = 0; i < row; i++)
{
GameObject newHex = (GameObject)Instantiate(hex);
newHex.transform.Rotate(new Vector3(0,30,0));
newHex.transform.position = new Vector3(((i*hexWidth)+((hexWidth/2))+(row*(hexWidth/2))),0,((startRowSize-row))*-(hexWidth/1.17f));
}
}
}

代码有效,但是行是“向后”生成的,这意味着外行包含更多的十六进制数,而内行包含最少的十六进制数。

这显然是我想要达到的相反效果。几个小时以来我一直在搞乱这段代码,但我不明白为什么。

有什么想法吗?

最佳答案

因此,在修改代码几个小时后,我弄清楚了为什么它没有正确迭代。他是精炼的代码...

void Start () 
{
//5 mid
startRowSize = 10;

for (int i = 0; i < startRowSize; i++)
{
GameObject newHex = (GameObject)Instantiate(hex);
hexWidth = newHex.gameObject.renderer.bounds.size.z;
newHex.transform.Rotate(new Vector3(0,30,0));
newHex.transform.position = new Vector3((i * hexWidth),0,0);
}

for (int row = 0; row < startRowSize; row++)
{
for (int i = 0; i < startRowSize-1-row; i++)
{
GameObject newHex = (GameObject)Instantiate(hex);
newHex.transform.Rotate(new Vector3(0,30,0));

if (row == 0)
{
newHex.transform.position = new Vector3(((i*hexWidth)+(hexWidth/2)),0,-(hexWidth/1.17f));
}
else
{
newHex.transform.position = new Vector3((i*hexWidth)+((row+1)*(hexWidth/2)),0,(row+1)*-(hexWidth/1.17f));
}
}
}

for (int row = 0; row < startRowSize; row++)
{
for (int i = 0; i < startRowSize-1-row; i++)
{
GameObject newHex = (GameObject)Instantiate(hex);
newHex.transform.Rotate(new Vector3(0,30,0));

if (row == 0)
{
newHex.transform.position = new Vector3(((i*hexWidth)+(hexWidth/2)),0,(hexWidth/1.17f));
}
else
{
newHex.transform.position = new Vector3((i*hexWidth)+((row+1)*(hexWidth/2)),0,(row+1)*(hexWidth/1.17f));
}
}
}
}

现在,有人可以建议如何稍微清理一下吗?我的脑袋都晕了...

关于c# - 嵌套 For 循环 - 在 Unity 中生成卡坦风格的六角网格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19962356/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com