| 12345678910111213141516171819202122232425262728293031323334353637 |
- using UnityEngine;
- public class NoiseGenerator
- {
- public float GetNoise(float x, float y, float scale)
- {
- return Mathf.PerlinNoise(x * scale, y * scale) * 2f - 1f;
- }
-
- public float GetNoise(float x, float y, float z, float scale)
- {
- // 3D noise approximation using multiple 2D noise samples
- float xy = Mathf.PerlinNoise(x * scale, y * scale);
- float xz = Mathf.PerlinNoise(x * scale, z * scale);
- float yz = Mathf.PerlinNoise(y * scale, z * scale);
-
- return (xy + xz + yz) / 3f * 2f - 1f;
- }
-
- public float GetFractalNoise(float x, float y, float scale, int octaves = 4)
- {
- float value = 0f;
- float amplitude = 1f;
- float frequency = scale;
- float maxValue = 0f;
-
- for (int i = 0; i < octaves; i++)
- {
- value += Mathf.PerlinNoise(x * frequency, y * frequency) * amplitude;
- maxValue += amplitude;
- amplitude *= 0.5f;
- frequency *= 2f;
- }
-
- return (value / maxValue) * 2f - 1f;
- }
- }
|