簡體   English   中英

查找二維數組鄰居的值?

[英]Find the value of a 2D arrays neighbors?

我有一個使用柏林噪聲生成地形的二維數組,然后在特定高度放置一個(3D)塊 - 在您點擊之前,我需要幫助的是生成“高度圖”的二維數組。 我試圖通過在二維數組中直接向上、向下、向左和向右檢查值來確定它旁邊的塊是否處於相同的高度(如果它是“相鄰的”)。 如果它們相等,則它們處於相同的高度,因此是“鄰居”。 如果我遇到的問題是所有鄰居的檢查總是返回 true,即使塊沒有鄰居。

perlin 噪聲高度圖的一個小例子

151514141312121111
151414131313121211
141414131312121211
141313131312121211
131313121212121111
131312121212111111
121212121111111111
111111111110101111
111111111010101111
111111111010101010
111111111010101010
101011101010101010
101010101099109999
991010109999988889
999109999888888999

這是檢查代碼,您必須查看整個文件,鏈接如下以獲取上下文

      if (terrain[x][leftColumn] == terrain[x][z]) {
        neighbors[2] = true; // left side
      }
      if (terrain[x][rightColumn] == terrain[x][z]) {
        neighbors[3] = true; //right side
      }
      if (terrain[belowRow][z] == terrain[x][z]) {
        neighbors[4] = true; // front side (below)
      }
      if (terrain[aboveRow][z] == terrain[x][z]) {
        neighbors[5] = true; // back side (above)
      }    

Pastebin: https ://www.pastiebin.com/5d5c5416391ec
任何幫助表示贊賞,亞瑟

移動這個靜態變量初始化

boolean[] neighbors = new boolean[]{false, false, false, false, false, false};

在內循環中,您可以在其中檢查每個塊的鄰居,為每個單獨的塊實例化一個新的鄰居數組。 現在鄰居是一個靜態變量。 您永遠不會重置鄰居數組上的值,因此每次迭代后它都保持為真。

編輯:

  if (belowRow > 1) { 
    belowRowExists = false;
    belowRow = 0;
  } 
  if (rightColumn > - 1) { 
    rightColumnExists = false;
    rightColumn = 0;
  }

錯了,您要檢查列或行是否越界,對嗎? 然后你想看看它們是否 >= chunkSize。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM