示例#1
0
    //Adds terrain obstacles within triangle based on biome
    void AddTerrainObstacles(TileData.Triangle triangle, Vector3[] points, GameObject parent)
    {
        float density = GetObstacleDensity(triangle);
        PoissonDiscSampler poisson = new PoissonDiscSampler(TileSize, TileSize, density);

        foreach (var sample in poisson.Samples())
        {
            if (PointInTriangle(new Vector3(sample.x, 0, sample.y), points[0], points[1], points[2]))
            {
                var objectGameObject = Instantiate(GetTerrainObstacles(triangle.biome), parent.transform);
                objectGameObject.transform.Rotate(new Vector3(0, UnityEngine.Random.Range(0, 360), 0));
                objectGameObject.transform.localScale = new Vector3(0.05f, 0.05f, 0.05f);
                objectGameObject.transform.position   = new Vector3(sample.x - .5f, 0, sample.y - .5f);
            }
        }
    }
示例#2
0
 //Gets the obstacle density based on the biome, higher number means lower density
 private float GetObstacleDensity(TileData.Triangle triangle)
 {
     if (triangle.biome == TileData.Triangle.Biome.Desert)
     {
         return(0.15f);
     }
     else if (triangle.biome == TileData.Triangle.Biome.Forest)
     {
         return(0.125f);
     }
     else if (triangle.biome == TileData.Triangle.Biome.Plains)
     {
         return(0.15f);
     }
     else
     {
         return(0.25f);
     }
 }