0

随着 for 循环的进展,您将如何改变陡度。基本上我已经制作了一个带有形成山谷的顶点的地形。此处为这些顶点创建数据以供使用:

    // Divides it to a sensible height
    const int DIVISOR_NUMBER = 40;

    for (int x = 0; x < TerrainWidth; x++)
    {
        float height = Math.Abs(((float)x - ((float)TerrainWidth / 2))/ (float)DIVISOR_NUMBER);

        for (int y = 0; y < TerrainHeight; y++)
        {
            float copyOfHeight = height;
            float randomValue = random.Next(0, 3);
            copyOfHeight += randomValue / 10;
            HeightData[x, y] = copyOfHeight;
        }
    }

这工作正常。但是我现在想让山谷的两侧在第一个循环的开始和结束时变得更陡峭,并且山谷越靠近中心越平坦。我有点精神障碍,想不出一个好的方法。任何帮助,将不胜感激。

4

1 回答 1

0

您可以为此使用平方(又名二次)曲线。尝试:

float offset = (float)x - (float)TerrainWidth/2;
float height = offset*offset*SCALE_FACTOR;

如果您仍然想要在谷底出现“折痕”,您可以将您的身高设为加权和:

float height = Math.Abs(offset) * ABS_FACTOR + offset*offset * QUADRATIC_FACTOR;
于 2013-04-25T17:12:12.737 回答