Итак, я попробовал этот код здесь, и он всегда порождает объект перед игроком каждые n-секунд (другая функция в Update ())
private void SpawnTarget(int prefabIndex = -1)
{
GameObject target;
target = Instantiate(targetPrefabs[0]) as GameObject;
target.transform.SetParent(transform);
target.transform.position = Vector3.forward * 3;
activeTarget.Add(target);
}
Теперь я пытаюсь рандомизировать место, где он появляется, чтобы он не всегда находился в одинаковых координатах X и Y (чтобы он перемещался по экрану). Я пробовал следующее, которое перемещает GameObject случайным образом по X и Y каждые n-секунд, но он больше не следует за осью Z игрока, то есть, если игрок движется мимо цели, теперь он продолжает возрождаться позади игрока .
private void SpawnTarget(int prefabIndex = -1)
{
GameObject target;
target = Instantiate(targetPrefabs[0]) as GameObject;
target.transform.SetParent(transform);
target.transform.position = target.transform.position + new Vector3(Random.Range(-1.0f, 1.0f), Random.Range(-1.0f, 1.0f), 3.0f);
activeTarget.Add(target);
}
В качестве альтернативы (тоже самое поведение):
private Vector3 newVector;
private void SpawnTarget(int prefabIndex = -1)
{
GameObject target;
target = Instantiate(targetPrefabs[0]) as GameObject;
target.transform.SetParent(transform);
newVector = new Vector3(Random.Range(-1.0f, 1.0f), Random.Range(-1.0f, 1.0f), 3.0f);
target.transform.position = target.transform.position + newVector;
activeTarget.Add(target);
}
Мне кажется, что я упускаю что-то очень простое c и очень глупое здесь.