Created
December 27, 2018 01:23
-
-
Save kankikuchi/f0382bc8a6849958ea6d142683ed48bd to your computer and use it in GitHub Desktop.
パーリンノイズの生成するクラス【Unity】
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// 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