我正在C#和XNA中進行文明遊戲。我用一個二維整數數組,填充一個循環來生成拼貼,我做了大量的研究,並且一直無法找到像地形那樣生成地球的方法。任何人都可以解釋如何做到這一點,或至少給我可以做到這一點的代碼,但我更喜歡和解釋?謝謝。使用perlin噪聲在C#中生成地形
1
A
回答
8
我使用類似這樣的算法來製作我的地形。基本上它會產生一些隨機數,並使用正弦波來產生山丘,當它們結合時會產生一個很好的丘陵景觀。請注意,如果您只需要3次以上的傳球,就可以添加循環和數組值。
private void GenerateTerrain()
{
terrainContour = new int[Width*Height];
//Make Random Numbers
double rand1 = randomizer.NextDouble() + 1;
double rand2 = randomizer.NextDouble() + 2;
double rand3 = randomizer.NextDouble() + 3;
//Variables, Play with these for unique results!
float peakheight = 20
float flatness = 50
int offset = 30;
//Generate basic terrain sine
for (int x = 0; x < Width; x++)
{
double height = peakheight/rand1 * Math.Sin((float)x/flatness * rand1 + rand1);
height += peakheight/rand2 * Math.Sin((float)x/flatness * rand2 + rand2);
height += peakheight/rand3 * Math.Sin((float)x/flatness * rand3 + rand3);
height += offset;
terrainContour[x] = (int)height;
}
}
然後填充高度圖只是循環的值,並檢查它是否高於閾值或不。
for (int x = 0; x < Width; x++)
{
for (int y = 0; y < Height; y++)
{
if (y > terrainContour[x])
tiles[x, y] = Solid Tile
else
tiles[x, y] = Blank Tile
}
}
的Theres更多,你可以添加到它,我已經添加了更多的隨機性和1縮進一些磚向上或向下更好的地形。而增加更多的正弦波將使其更加逼真。
嘗試使用2D Perlin Noise算法,並選擇一定的高度來製作洞穴和更高級的地形,因爲這是我現在所做的,但這裏的代碼是一個好的開始。
相關問題
- 1. 在matlab中生成程序\ perlin噪聲
- 2. 用於隨機地形生成的Java 2D Perlin噪聲
- 3. 使用Perlin噪聲生成高度圖噪聲返回黑色位圖
- 4. 2D Perlin噪聲地形發生器錯誤(Java)
- 5. Perlin僅生成噪音0
- 6. 隨機Perlin噪聲
- 7. Perlin運動噪聲?
- 8. 使Perlin噪聲可擴展
- 9. Java中的Perlin噪聲
- 10. 如何在Lua中生成平鋪Perlin噪聲?
- 11. 關於使用Perlin噪聲生成瓷磚地圖的基本問題
- 12. 使用perlin噪聲庫的幫助libnoise
- 13. C#XNA Perlin噪聲,數組越界
- 14. 軟件Perlin噪聲實現
- 15. Perlin噪聲gdscript錯誤
- 16. Java:2D Perlin噪聲創建
- 17. Perlin噪聲塊網格
- 18. 在C中生成白噪聲圖像#
- 19. Perlin噪聲不生成1和-1之間的數字
- 20. 如何使用perlin噪聲python製作2D地圖
- 21. Flash中的Perlin噪聲如何實現?
- 22. Java中的Perlin噪聲問題
- 23. 如何實現Raphael.js中的Perlin噪聲?
- 24. C++中的固體噪聲生成
- 25. 在C#中Perlin噪聲圖像的創建
- 26. 三維柏林噪聲函數如何用於生成地形?
- 27. 改進的Perlin噪聲模塊Lua
- 28. 平滑低倍頻perlin噪聲
- 29. Perlin噪聲的每個頂點法線?
- 30. Perlin噪聲和高度貼圖/位圖
有[這裏]看看(http://freespace.virgin.net/hugo.elias/models/m_perlin.htm)。詳細解釋,僞代碼和示例圖像。 – 2012-03-14 09:29:59