0

我将如何创建一个非均匀随机生成的游戏对象(敌人),以模仿像这个图像这样的“部落”的形成: 在此处输入图像描述

我希望前面有更多的游戏对象,而随着它向后逐渐减少。我想制作一个 Empty gameObject 并使用如下代码让敌人瞄准:

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

但是,这样做不会给我带来后退较少的“线索”效应。

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

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

有没有人对如何实现这一目标提出建议?

实现@Jerry 的代码后我的结果:

前排派对

更集中在前面;后面少了:)

4

1 回答 1

1

我会寻求马克西米利安·格哈特的建议。这是一些原始实现,供您根据需要进行调整。最重要的调整是在一列中定位,你可以用一些随机数来实现。

    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;
        }
    }
于 2016-09-27T09:13:04.913 回答