2014-02-27 81 views
1

我在Unity3d中嘗試了一些東西,而我偶然發現不能創建一個簡單的世界生成器。 Basicaly我希望世界發電機創造一個類似於世界一代OpenTTD的世界(僅用於地形&水,而不是建築物或森林或其他任何東西)。Unity3d - 如何在OpenTTD中創建一個世界生成器?

我遇到的問題是,我只能隨着像世界一代這樣的Minecraft方向結束更多的事情,而這正是我不想要的。我通常最終會遇到某種塊狀的雷區,而不是像OpenTTD這樣的好世界。

我想知道是否有人有世界一代的經驗,並能指出我在正確的方向。

我沒有任何代碼可以顯示,因爲我在許多失敗的憤怒中刪除了我的代碼。

如果我在錯誤的地方發佈了這個消息,我很抱歉,但它似乎只是合乎邏輯的地方。

+1

http://vcs.openttd.org/svn/browser/trunk/src/genworld。 cpp – Kissiel

回答

1

我使用LibNoise來生成世界。 Here是一個移植到團結。我使用它here但沒有漸變或任何東西,所以它不會切斷製作「地形」。實際的C++ libnoise有很多關於如何生成地形教程,c++ libnoise link

我素速度測試:

Perlin perlin = new Perlin((double)frequency, (double)lacunarity, (double)persistence, octaves, seed, QualityMode.High); 
    RidgedMultifractal fractal = new RidgedMultifractal((double)frequency, (double)lacunarity, octaves, seed, QualityMode.High); 

    ModuleBase noise = new Add(perlin, fractal); 

    for (int x = 0; x < chunkSize; x++) 
    { 
     for (int y = 0; y < chunkSize; y++) 
     { 
      for (int z = 0; z < chunkSize; z++) 
      { 


       if (noise.GetValue(global) < .5) // or if you want it to look like terrain change to (chunkPos.y * chunkSize) + y <= (Noise.GetValue(global + 1)/2) * height 
       { 
        //add here 
       } 
      } 
     } 
    } 
+0

謝謝您的建議。我發現了一些叫做珀林噪音。據我瞭解,我正在查看這個默認情況下unity3d中的LibNoise和perlin噪聲。你知道任何使用LibNoise的例子嗎? – DijkeMark

+0

是的,它有perlin噪音,mathf.perlin噪音,但你沒有太多的控制權。對於體素速度測試即時編輯我的答案添加我所做的。 – Shredder2500

+0

好的,謝謝,我會盡快嘗試。我會讓你知道我的結果是 – DijkeMark

相關問題