文章首发见博客:https://mwhls.top/4850.html。
无图/格式错误/后续更新请见首发页。
更多更新请到mwhls.top查看
欢迎留言提问或批评建议,私信不回。
汇总:Unity 记录
现在卡在了跨地图洞穴生成,没想到什么好的方法能够像地面一样随机连续洞穴块。
摘要:带种子的柏林噪声。
// Thanks to Auburn and other authers of FastNoise, I copied it in 2023/9/2 from https://github.com/Auburn/FastNoise_CSharp
public class Noise{
public int seed;
FastNoise _noise_generator;
public Noise(int seed=-1){
if (seed == -1) seed = System.DateTime.Now.Millisecond;
this.seed = seed;
_noise_generator = new(seed);
}
public float perlin(int x, int y, float scale){
_noise_generator.SetNoiseType(FastNoise.NoiseType.Perlin);
_noise_generator.SetFrequency(1/scale);
float noise_value = _noise_generator.GetNoise(x, y);
return noise_value;
}
public float perlin(int x, float scale){
_noise_generator.SetNoiseType(FastNoise.NoiseType.Perlin);
_noise_generator.SetFrequency(1/scale);
float noise_value = _noise_generator.GetNoise(x, 0f);
return noise_value;
}
static float perlin(int x, int y, float scale, int seed){
FastNoise noise_generator = new(seed);
noise_generator.SetNoiseType(FastNoise.NoiseType.Perlin);
noise_generator.SetFrequency(1/scale);
float noise_value = noise_generator.GetNoise(x, y);
return noise_value;
}
static float perlin(int x, float scale, int seed){
float noise_value = perlin(x, 0, scale, seed);
return noise_value;
}
}