Skip to content

Instantly share code, notes, and snippets.

@kankikuchi
Created December 27, 2018 01:23
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kankikuchi/f0382bc8a6849958ea6d142683ed48bd to your computer and use it in GitHub Desktop.
Save kankikuchi/f0382bc8a6849958ea6d142683ed48bd to your computer and use it in GitHub Desktop.
パーリンノイズの生成するクラス【Unity】
// PerlinNoiseGenerator.cs
// http://kan-kikuchi.hatenablog.com/entry/Combine_PerlinNoise
//
// Created by kan.kikuchi on 2018.12.15.
using UnityEngine;
/// <summary>
/// パーリンノイズの生成するクラス
/// </summary>
public class PerlinNoiseGenerator{
//パーリンノイズのシード(厳密にはシードではないがシード代わりに使っている値)
private float _seed = 0;
//ノイズの最小、最大値
private float _min = 0, _max = 1;
//ノイズの変化率
private float _rateOfChange = 1f;
//=================================================================================
//初期化
//=================================================================================
public PerlinNoiseGenerator(float min = 0, float max = 1, float rateOfChange = 1){
//シードはランダムに決定(ランダムなパーリンノイズになる)
_seed = Random.Range(0f, 100f);
_min = min;
_max = max;
_rateOfChange = rateOfChange;
}
/// <summary>
/// シードを設定する(パーリンノイズを再現出来る)
/// </summary>
public void SetSeed(float seed){
_seed = seed;
}
//=================================================================================
//取得
//=================================================================================
/// <summary>
/// パーリンノイズを取得(xは時間経過で変化、yはシードで固定)
/// </summary>
public float GetNoise() {
return GetNoise(Time.time);
}
/// <summary>
/// パーリンノイズを取得(任意のxでの値、yはシードで固定)
/// </summary>
public float GetNoise(float x) {
return GetNoise(x, _seed);
}
/// <summary>
/// パーリンノイズを取得(任意のxとyでの値)
/// </summary>
public float GetNoise(float x, float y) {
return _min + Mathf.PerlinNoise(x * _rateOfChange, y * _rateOfChange) * (-_min + _max);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment