private void GenerateBush() { for (int i = 0; i < trees.Count; i++) { /*List<Vector2> points = PoissonDiscSampling.GeneratePoints(bushRadius, bushArea, 30); * * for(int j = 0; j < points.Count; j++) * { * if(Random.value > bushProbability) * { * Instantiate(bushPrefab, trees[j].transform.position + new Vector3(points[j].x, 0, points[j].y) - new Vector3(bushArea.x * 0.5f, 0, bushArea.y * 0.5f), * Quaternion.identity); * } * }*/ for (int j = 0; j < 30; j++) { if (Random.value < bushProbability) { continue; } Vector2 direction = Random.insideUnitCircle * PoissonDiscSampling.NextGaussian() * bushArea; Vector3 position = trees[i].transform.position + new Vector3(direction.x, 0, direction.y); position.y = trees[i].transform.position.y; Instantiate(bushPrefab, position, Quaternion.identity); } } }
private void GenerateRock() { for (int i = 0; i < trees.Count; i++) { for (int j = 0; j < 10; j++) { if (Random.value < rockProbability) { continue; } Vector2 direction = Random.insideUnitCircle * PoissonDiscSampling.NextGaussian() * rockArea; Vector3 position = trees[i].transform.position + new Vector3(direction.x, 0, direction.y); position.y = trees[i].transform.position.y; Instantiate(rockPrefab, position, Quaternion.identity); } } }