Spawn gameObject horde,修改衍生对象的浓度

时间:2016-09-27 08:24:46

标签: c# unity3d random unity5 non-uniform-distribution

我如何创建一个非均匀的随机生成的gameObjects(敌人)模仿这个图像的“部落”的形成: enter image description here

我希望前面有更多的游戏对象,而后面的游戏对象越来越少。我想到制作一个空游戏对象并让敌人以这样的代码为目标:

null

然而,这样做不会给我带来“追踪”效果,因为他回来的人数较少。

这是我的随机生成敌人的代码,如果它有帮助:

public Vector3 target : Transform;
if (target == null && GameObject.FindWithTag("Empty"))
{
       target = GameObject.FindWithTag("Empty").transform;
}

有没有人建议如何实现这个目标?

实施@Jerry代码后的结果:

party in the front

更集中于前方;少在后面:)

1 个答案:

答案 0 :(得分:1)

我会选择Maximilian Gerhardt的建议。这是一些原始实现,您可以根据需要进行调整。调整最重要的是定位在一列中,使用一些随机数可以实现。

    void SpawnHorde()
    {
        int hordeCount = 200;
        float xPosition = 0;

        const int maxInColumn = 20;

        while (hordeCount > 0)
        {
            int numberInColumn = Random.Range(5, maxInColumn);
            hordeCount -= numberInColumn;

            if (hordeCount < 0)
                numberInColumn += hordeCount;

            for (int i = 0; i < numberInColumn; i++)
            {
                Vector3 spawnPosition = new Vector3(xPosition, 50, Random.Range(0, 100));
                Instantiate(Resources.Load("Prefabs/Sphere"), spawnPosition, Quaternion.identity);
            }

            xPosition += (float)maxInColumn * 2f / (float)hordeCount;
        }
    }