最近在搞的随机地图生成器,用到了Unity的PerlinNoise函数
由于我意外的设置了参数,导致PerlinNoise返回了完全相同的值。
0.465xxxxxxx
后来经过其他小伙伴和指点,原来PerlinNoise在两个参数都是整数的时候,确实会返回完全相同的值。于是我又增加了一个Scale变化参数。令他等于Pi/3
之后生成的地图就不会出现这种问题了。
代码如下:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace GameUtil
{
public class PerlinRandom
{
float[] values;
public float x_org = 0;
public float y_org = 0;
public int scale = 10;
public int width = 512;
public int height = 512;
/// <summary>
/// 不生成Texture,而只生成PerinNorse二维随机数数组。
/// </summary>
public void Generate()
{
values = new float[width * height];
float y = 0.0f;
float real_scale = scale * Mathf.PI / 3;