Unity记录5.4-地图-带种子的柏林噪声

文章首发见博客:https://mwhls.top/4850.html

无图/格式错误/后续更新请见首发页。

更多更新请到mwhls.top查看

欢迎留言提问或批评建议,私信不回。
汇总:Unity 记录

现在卡在了跨地图洞穴生成,没想到什么好的方法能够像地面一样随机连续洞穴块。

摘要:带种子的柏林噪声。

FastNoise_C#-2023/9/2
  • Auburn/FastNoise_CSharp: FastNoise C# Version
  • Feature:
    • Value Noise 2D, 3D
    • Perlin Noise 2D, 3D
    • Simplex Noise 2D, 3D, 4D
    • Cubic Noise 2D, 3D
    • Gradient Perturb 2D, 3D
    • Multiple fractal options for all of the above
    • Cellular (Voronoi) Noise 2D, 3D
    • White Noise 2D, 3D, 4D
    • Supports floats or doubles
带种子的柏林噪声-2023/9/1
  • Unity的柏林噪声设置不了种子,而后续我可能会需要通过固定输入来获取地图状态,因此改用FastNoise。
实现代码-2023/08/31-2023/9/1
  • 本来还包括一个地图块的类,但是我目前的边界点和周围是相关的,和随机生成有点冲突,考虑到用空间换计算量挺划算,所以也没实现计算边界点,因此这个类没什么信息量,没放。
c 复制代码
    // 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;
        }
    }
相关推荐
avi91113 小时前
[AI相关]Unity的C#代码如何简写
unity·c#·语法糖
虾球xz10 小时前
游戏引擎学习第114天
学习·游戏引擎
虾球xz11 小时前
游戏引擎学习第109天
学习·游戏引擎
心疼你的一切11 小时前
C# 中关于补位的写法 PadLeft,PadRight 函数
开发语言·unity·c#·游戏引擎·csdn·心疼你的一切
沐沐森的故事15 小时前
Unity for Python —— 强大的 Python 脚本支持提升 Unity 编辑器效率
python·unity·编辑器·pythonrunner·pythonengine
xklcy17 小时前
Unity通过Vosk实现离线语音识别方法
unity·语音识别
虾球xz19 小时前
游戏引擎学习第113天
学习·游戏引擎
老朱佩琪!1 天前
在Unity中用简单工厂模式模拟原神中的元素反应
unity·简单工厂模式
虾球xz2 天前
游戏引擎学习第111天
学习·游戏引擎
程序猿多布2 天前
预定义委托(C# and Unity)
unity·c#