0

ループの進行に合わせて勾配を変更するにはどうすればよいでしょうか。基本的に、谷を形成する頂点を持つ地形を作成しました。これらの頂点が使用するデータの作成は次のとおりです。

    // 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 に答える