我为“更好”的使用道歉,但这就是我真正需要的。
我正在编写一个“河流”生成算法,我需要进行大量比较。我想知道是否有更好的方法来编写我必须进行的所有比较。
if Rain.value(atPosition: vector_float2(Float(columns),Float(rows))) == 1.0 {
fullMap.setTileGroup(tileDef4, forColumn: columns, row: rows)
if Rain.value(atPosition: vector_float2(Float(columns - 1),Float(rows + 1))) == 0.9 {
fullMap.setTileGroup(tileDef4, forColumn: columns, row: rows)
}
if Rain.value(atPosition: vector_float2(Float(columns - 1),Float(rows))) == 0.9 {
fullMap.setTileGroup(tileDef4, forColumn: columns, row: rows)
}
if Rain.value(atPosition: vector_float2(Float(columns - 1),Float(rows - 1))) == 0.9 {
fullMap.setTileGroup(tileDef4, forColumn: columns, row: rows)
}
if Rain.value(atPosition: vector_float2(Float(columns),Float(rows - 1))) == 0.9 {
fullMap.setTileGroup(tileDef4, forColumn: columns, row: rows)
}
if Rain.value(atPosition: vector_float2(Float(columns + 1),Float(rows - 1))) == 0.9 {
fullMap.setTileGroup(tileDef4, forColumn: columns, row: rows)
}
if Rain.value(atPosition: vector_float2(Float(columns + 1),Float(rows))) == 0.9 {
fullMap.setTileGroup(tileDef4, forColumn: columns, row: rows)
}
if Rain.value(atPosition: vector_float2(Float(columns + 1),Float(rows + 1))) == 0.9 {
fullMap.setTileGroup(tileDef4, forColumn: columns, row: rows)
}
if Rain.value(atPosition: vector_float2(Float(columns),Float(rows + 1))) == 0.9 {
fullMap.setTileGroup(tileDef4, forColumn: columns, row: rows)
}
}
基本上,“Rain”是一个 perlin HeightMap,我用它来确定我的 tileMap 中的降雨量。这些 if 语句检查 fullMap 中的 8 个相邻图块(满足高降雨量标准)并确定最小值,然后以河流的形式设置水图块。
这种方法非常低效,因为我将继续将 if 语句写入这些 if 语句中,以便在此之后检查每个相邻的图块。这将是一大块代码。有没有更好的方法来检查 tileMap 中某个图块周围的每个相邻图块以减小代码的大小?