示例#1
0
    public GameObject Generate()
    {
        // Create objects grouped by "Generated Objects" GameObject.
        GameObject parent_object = new GameObject("Generated Objects");

        // Create the object under same parent as this script.
        parent_object.transform.parent = gameObject.transform.parent;


        // Create the objects with randomized position and scale.
        for (int i = 0; i <= count; ++i)
        {
            GameObject instantiated_obj = Instantiate(object_to_instantiate) as GameObject;

            //instantiated_obj.transform.position = new Vector3(Random.Range(-pos_range, pos_range),
            //                                                  Random.Range(-pos_range, pos_range),
            //                                                  Random.Range(-pos_range, pos_range));

            instantiated_obj.transform.position = new Vector3(RandomFromDistribution.RandomRangeNormalDistribution(-pos_range, pos_range, RandomFromDistribution.ConfidenceLevel_e._999),
                                                              0,
                                                              RandomFromDistribution.RandomRangeNormalDistribution(-pos_range, pos_range, RandomFromDistribution.ConfidenceLevel_e._999));

            float scale;
            switch (size_range_type)
            {
            case SizeRangeType_e.Uniform:
                scale = Random.Range(min_size, max_size);
                break;

            case SizeRangeType_e.LinearRight:
                scale = RandomFromDistribution.RandomRangeLinear(min_size, max_size, 1.0f);
                break;

            case SizeRangeType_e.LinearLeft:
                scale = RandomFromDistribution.RandomRangeLinear(min_size, max_size, -1.0f);
                break;

            case SizeRangeType_e.Normal:
                scale = RandomFromDistribution.RandomRangeNormalDistribution(min_size, max_size, RandomFromDistribution.ConfidenceLevel_e._999);
                break;

            case SizeRangeType_e.CurveRight:
                scale = RandomFromDistribution.RandomRangeSlope(min_size, max_size, 10.0f, RandomFromDistribution.Direction_e.Right);
                break;

            case SizeRangeType_e.CurveLeft:
                scale = RandomFromDistribution.RandomRangeSlope(min_size, max_size, 10.0f, RandomFromDistribution.Direction_e.Left);
                break;

            default:
                scale = Random.Range(min_size, max_size);
                break;
            }
            instantiated_obj.transform.localScale = new Vector3(scale, scale, scale);

            instantiated_obj.transform.parent = parent_object.transform;
        }

        return(parent_object);
    }
示例#2
0
 protected override float GetRandomNumber(float min, float max)
 {
     return(RandomFromDistribution.RandomRangeSlope(min, max, skew, direction));
 }