Exemplo n.º 1
0
    public void makeSpline(int segmentCount, float sporadicFactor, float noiseScale)
    {
        Perlin3D.scale = noiseScale;
        Vector3 direction  = Vector3.right;
        Vector3 currentPos = Vector3.one * Random.Range(40, 9999);

        for (int i = 0; i < segmentCount; i++)
        {
            float x = 0.1f;
            float y = Perlin3D.PerlinNoise3D(currentPos + Vector3.up) - 0.5f;
            float z = Perlin3D.PerlinNoise3D(currentPos + Vector3.forward) - 0.5f;
            direction   = Vector3.Slerp(direction, new Vector3(x, y, z).normalized, sporadicFactor);
            currentPos += direction.normalized * 20f;
            SplineNoise3D.AddSplineSegment(currentPos, 10f);
        }
    }
Exemplo n.º 2
0
    public float SuperNoise(Vector3 point)
    {
        //distance along spline X
        float dist = SplineNoise3D.HoleNoise(point) / _HoleSize;

        if (dist > 1f)
        {
            dist = 1f;
        }
        Perlin3D.scale = _InternalCaveNoise;
        float caveWalls = SplineNoise3D.SplineNoise(point) + Perlin3D.PerlinNoise3D(point) * _CaveWallAmount;

        if (caveWalls < 6f)
        {
            caveWalls = 0f;
        }
        return((caveWalls + Perlin3D.PerlinNoise3D(point) * _InternalCaveAmount) * dist);
    }