Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 统一-给出相同数字的PerlinNoise_C#_2d_Unity5_Generated - Fatal编程技术网

C# 统一-给出相同数字的PerlinNoise

C# 统一-给出相同数字的PerlinNoise,c#,2d,unity5,generated,C#,2d,Unity5,Generated,我正在构建一个基于瓷砖的游戏,我想在其中生成一个供玩家探索的世界。出于某种原因,Mathf.PerlinNoise()有时会反复给出相同的数字,即使每次给出的XY都不同 void Start () { treeOffsetX = Mathf.Round(Random.Range (10f,300000f)); treeOffsetY = Mathf.Round(Random.Range (10f,300000f)); waterOffsetX = Mathf.Round(

我正在构建一个基于瓷砖的游戏,我想在其中生成一个供玩家探索的世界。出于某种原因,Mathf.PerlinNoise()有时会反复给出相同的数字,即使每次给出的XY都不同

void Start () {
    treeOffsetX = Mathf.Round(Random.Range (10f,300000f));
    treeOffsetY = Mathf.Round(Random.Range (10f,300000f));
    waterOffsetX = Mathf.Round(Random.Range (10f,300000f));
    waterOffsetY = Mathf.Round(Random.Range (10f,300000f));
    boulderOffsetX = Mathf.Round(Random.Range (10f,300000f));
    boulderOffsetY = Mathf.Round(Random.Range (10f,300000f));

    for (float x = -gridX; x < gridX; x += 0.1f) 
    {
        for (float y = -gridY; y < gridY; y += 0.1f) {
            Vector3 spawnPos = new Vector3 (x * 10, y * 10, 0);
            float perlinTree = Mathf.PerlinNoise ((x + treeOffsetX) / seedTreeX, (y + treeOffsetY) / seedTreeY);
            float perlinWater = Mathf.PerlinNoise ((x + waterOffsetX) / seedWaterX, (y + waterOffsetY) / seedWaterY);
            float perlinBoulder = Mathf.PerlinNoise ((x + boulderOffsetX) / seedBoulderX, (y + boulderOffsetY) / seedBoulderY);


            if (perlinWater > perlinThresholdWater) {
                GameObject waterTile = Instantiate (water, spawnPos, Quaternion.identity) as GameObject;
            } else if (perlinBoulder > perlinThresholdBoulder) {
                GameObject grassTile = Instantiate (grass, spawnPos, Quaternion.identity) as GameObject;
                GameObject boulderTile = Instantiate (boulder, spawnPos, Quaternion.identity) as GameObject;
            } else if (perlinTree > perlinThresholdTree) {
                GameObject grassTile = Instantiate (grass, spawnPos, Quaternion.identity) as GameObject;
                GameObject treeTile = Instantiate (tree, spawnPos, Quaternion.identity) as GameObject;
            } else {
                GameObject grassTile = Instantiate (grass, spawnPos, Quaternion.identity) as GameObject;
            }
        }
    }
}
void Start(){
treeOffsetX=数学圆整(随机范围(10f,300000f));
treeOffsetY=数学圆整(随机范围(10f,300000f));
waterOffsetX=数学圆(随机范围(10f,300000f));
waterOffsetY=Mathf.Round(Random.Range(10f,300000f));
boulderOffsetX=数学圆整(随机范围(10f,300000f));
boulderOffsetY=Mathf.Round(随机范围(10f,300000f));
对于(浮点x=-gridX;xperlinThresholdWater){
GameObject waterTile=实例化(water、spawnPos、Quaternion.identity)为GameObject;
}否则如果(perlinBoulder>Perlinthresholdbulder){
GameObject grassTile=实例化(grass、spawnPos、Quaternion.identity)为GameObject;
GameObject boulderTile=实例化(boulder、spawpos、Quaternion.identity)为GameObject;
}else if(perlinTree>perlinThresholdTree){
GameObject grassTile=实例化(grass、spawnPos、Quaternion.identity)为GameObject;
GameObject treeTile=实例化(树、spawnPos、Quaternion.identity)为GameObject;
}否则{
GameObject grassTile=实例化(grass、spawnPos、Quaternion.identity)为GameObject;
}
}
}
}
因此,有时,每当穿过环路时,悬钩树或悬钩石都会给出相同的数字。这样就不会产出树木或巨石。我对水没有问题


它怎么可能有时起作用,有时不起作用?

你的阈值是多少?树:0.775,巨石:0.9,水:0.7你的阈值是多少?树:0.775,巨石:0.9,水:0.7