Spawn gameObject horde, изменяйте концентрацию появляющихся объектов
Как бы я создал неравномерное случайное поколение gameObjects (врагов), которое имитирует формирование "орды", как это изображение:
Я хочу, чтобы спереди было больше игровых объектов и меньше, когда оно затягивалось назад. Я думал о создании пустого игрового объекта и создании цели для врагов с помощью кода, подобного следующему:
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);
}
}
У кого-нибудь есть предложения как этого добиться?
Мои результаты после реализации кода @ Джерри:
Более сосредоточены спереди; меньше в спину:)
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;
}
}