Пытаюсь создать трехмерную воксельную местность, и я пытаюсь создать случайные семена, а не одни и те же семена несколько раз - PullRequest
0 голосов
/ 25 мая 2018

Я пытаюсь выяснить, как рандомизировать мой шум Перлина в C #, но не могу найти способ сделать это с помощью кода, который у меня есть на данный момент.Вот мой код:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PerlinCubeGenScript01 : MonoBehaviour {

public float perlinNoise = 0f;
public float refinement = 0f;
public int multiplier = 0;
public int cubes = 0;
public float darkness;


void Start () {


    for (int i = 0; i < cubes; i++) {

        for (int j = 0; j < cubes; j++) {

            perlinNoise = Mathf.PerlinNoise(i * refinement, j * refinement);
            GameObject go = GameObject.CreatePrimitive(PrimitiveType.Cube);
            go.transform.position = new Vector3(i, Mathf.Round(perlinNoise * multiplier), j);

            int cubeY = (int) Mathf.Round(perlinNoise * multiplier);
            Debug.Log(cubeY);

            go.GetComponent<Renderer>().material.color = new Color(1, 1, 1, 0f);

        }
    }
}

void Update () {

}
}

1 Ответ

0 голосов
/ 18 июня 2018

Пока функция Perlin Noise позволяет вам выбирать любую точку в 2D-пространстве, почему бы просто не использовать случайное число в качестве начального числа и начать отбор точек оттуда?

void Start () {

    Random rnd = new Random();
    int seed = rnd.Next(Int32.MinValue, Int32.MaxValue);

    for (int i = 0; i < cubes; i++) {

        for (int j = 0; j < cubes; j++) {

            perlinNoise = Mathf.PerlinNoise(seed + (i * refinement), seed + (j * refinement));  
            // Note that if refinement never changes you are always picking the same point
            GameObject go = GameObject.CreatePrimitive(PrimitiveType.Cube);
            go.transform.position = new Vector3(i, Mathf.Round(perlinNoise * multiplier), j);

            int cubeY = (int) Mathf.Round(perlinNoise * multiplier);
            Debug.Log(cubeY);

            go.GetComponent<Renderer>().material.color = new Color(1, 1, 1, 0f);

        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...