示例#1
0
    void GenerateDropVector(Barrel bomb)
    {
        Vector3 drop_vector = Vector3.zero;

        bool vector_valid = false;

        do
        {
            float random_x = Random.Range(-max_range, max_range);
            random_x = Mathf.Clamp(random_x, -min_range, max_range);

            float random_z = Random.Range(-max_range, max_range);
            random_z = Mathf.Clamp(random_z, -min_range, max_range);

            drop_vector = new Vector3(random_x, 10000, random_z);

            int test_passes = 0;
            foreach (Vector3 v in prev_drop_vectors)
            {
                if (Vector3.Distance(drop_vector, v) >= min_range)
                {
                    ++test_passes;
                }
            }

            if (test_passes >= prev_drop_vectors.Count)
            {
                vector_valid = true;
            }
        } while (!vector_valid);

        bomb.AddForce(drop_vector);

        prev_drop_vectors.Add(drop_vector);
    }