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;
        }
    }
相关推荐
WarPigs4 小时前
Unity光照笔记
笔记·unity·游戏引擎
gameatp8 小时前
UE RPG游戏开发练手 第二十六课 普通攻击1
游戏引擎·虚幻
神码编程8 小时前
【Unity】 HTFramework框架(六十五)ScrollList滚动数据列表
unity·游戏引擎·ugui
DanmF--9 小时前
Protobuf工具
网络·unity·游戏引擎·游戏程序
敲代码的 蜡笔小新12 小时前
【行为型之迭代器模式】游戏开发实战——Unity高效集合遍历与场景管理的架构精髓
unity·设计模式·c#·迭代器模式
Magnum Lehar1 天前
3d游戏引擎的math矩阵实现
线性代数·矩阵·游戏引擎
虾球xz1 天前
游戏引擎学习第282天:Z轴移动与摄像机运动
c++·学习·游戏引擎
飞起的猪1 天前
【虚幻引擎】UE5独立游戏开发全流程(商业级架构)
ue5·游戏引擎·游戏开发·虚幻·独立开发·游戏设计·引擎架构
敲代码的 蜡笔小新1 天前
【行为型之命令模式】游戏开发实战——Unity可撤销系统与高级输入管理的架构秘钥
unity·设计模式·架构·命令模式
Tech Synapse2 天前
数字孪生工厂实战指南:基于Unreal Engine/Omniverse的虚实同步系统开发
游戏引擎·linq·虚幻