繁体   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