GameObject的产生数量随机地围绕一个圆圈,彼此相距最小距离

时间:2016-12-06 06:20:13

标签: c# unity3d

目前我有两个球围绕一个圆圈随机产生,它们之间的最小距离为0.3,因此它们不会发生碰撞。但是,我希望玩家设置产生的球的数量,我需要这些球随机产生,但彼此之间的距离最小。

使用我的代码,任何大于2的球数量都可能有两个球在彼此之上产生,因为我只用spawnConstant引用最后产生的球的位置。

当我试图用数组解决它时,我遇到了同样的问题,位置只引用数组中的一个位置。附件是当前的代码:

IEnumerator SpawnBalls () {

    Vector3 spawnConstant = new Vector3 ();
    Vector3 spawnPosition = new Vector3 ();

    for (int i = 0; i < ballNumber; i++) {

        if (i == 0) {

            spawnPosition = Random.insideUnitCircle.normalized * 0.7f; 
            Instantiate (ball, spawnPosition, Quaternion.identity);
            Debug.Log ("wolo");
            spawnConstant = spawnPosition;

        } else if (i > 0) {

            spawnPosition = Random.insideUnitCircle.normalized * 0.7f;

            while (Vector3.Distance (spawnPosition, spawnConstant) <= 0.3f) {
                spawnPosition = Random.insideUnitCircle.normalized * 0.7f;
            }

            spawnConstant = spawnPosition;
            Instantiate (ball, spawnPosition, Quaternion.identity);
            Debug.Log ("yolo");
        }
    }
    yield return null;
}

如何让每个球都参考以前所有球的位置,并与它们产生最小距离?

1 个答案:

答案 0 :(得分:1)

$ip =  $_SERVER['REMOTE_ADDR'];   // ip = 8.8.8.8
$country = file_get_contents('http://ipinfo.io/8.8.8.8/country'); // for more info visit [enter link description here][1] 
echo $country;  // output = US | UK | IN as per ip (just one country code)