我正在用Java開發一個遊戲,使用LibGDX我想要隨機地形生成。我在網上發現了一個Perlin類,並決定將它用於我的項目。Perlin噪聲不生成1和-1之間的數字
我現在有一個簡單的世界級以此爲構造:
public World() {
Random rand = new Random();
seed = rand.nextInt();
Perlin perlin = new Perlin(seed);
for(int x = 0; x < map.length; x++) {
for(int y = 0; y < map.length; y++) {
map[x][y] = perlin.noise2(x, y);
}
}
}
(地圖是一個二維int數組ofcourse)
在我的遊戲的主要類我創建了一個世界,然後畫它在render()
方法是這樣的:
batch.begin();
for (int x = 0; x < w.getMap().length; x++) {
for (int y = 0; y < w.getMap().length; y++) {
if (w.getMap()[x][y] <= 0) {
batch.draw(water, x * 32, y * 32);
}
if (w.getMap()[x][y] > 0) {
batch.draw(grass, x * 32, y * 32);
} else {
log.severe("not between -1 and 1");
}
}
}
batch.end();
一旦執行它基本上Spas控制檯與「不是吐溫-1和1「,並在一段時間後屏幕充滿了水的質感。
這是課程還是我搞亂了?可能是後者。我應該如何解決它?另外,有關優化的任何提示?代碼有點看起來凌亂。
This is the class I'm using. Posted it on pastebin because it's ~580 lines long.
更新:我固定的日誌垃圾郵件,這是一種愚蠢的錯誤,盜賊指出。
現在我面臨一個不同的問題。它似乎只是在生成水。我檢查了什麼getMap()[x][y]
正在返回,它基本上只有0.0s和-0.0s。
你不想讓第二個「if」成爲「其他」嗎?這將擺脫對其他人和垃圾郵件日誌的需求,因爲那樣的情況將不可能實現。 – alzee