当我尝试在程序中使用 Perlin 噪声时,它似乎只生成 0.1 到 0.95 之间的值。我检查了文档并在线进行了研究以尝试解决我的问题,我相信问题可能是由于我在 for 循环中迭代 x 和 y 的方式造成的,但我不确定。
这是 MRE:
float width = tiles[0].transform.localScale.x; // this value is 1
float height = tiles[0].transform.localScale.z; // this value is 1
for (float x = 0; x < map_width; x++) // map_width is 100
{
for (float y = 0; y < map_height; y++) // map_height is 100
{
var perlin = Mathf.PerlinNoise(x / 10, y / 10);
Debug.Log(perlin); // values between 0.1 and 0.95
}
}
当我尝试此代码时,
Debug.Log(perlin);
显示的值永远不会小于 0.1 或大于 0.95。为什么?
你做的一切都是对的,所有的噪音都是这样的。更多噪声示例:Simplex、Perlin、Worley、Value 噪声等 - 它们都会生成有界值。
对于我的世界生成,我通常对 0-1 或 -1 到 1 进行代数拟合。移位、乘法,然后将值钳位为 0:1、-1:1 并将其硬编码在辅助类中的某处。