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