Нерест врага в случайных точках возрождения без перекрытия! - PullRequest
0 голосов
/ 04 апреля 2020

Привет, пользователи stackoverflow, Это мой первый вопрос ...

Я хочу порождать врагов в случайных точках появления, не перекрывая друг друга. Итак, я проверяю, что если точка появления используется, то не используйте эту точку появления, если это не так, продолжайте ... У меня есть пустой gameObject, который содержит все spawnPoints для врага. Я назначил скрипт для этого пустого gameobejct.

Я пытался использовать Transform в качестве списка для точек появления, но, к сожалению, это не сработало. Если вы сможете преобразовать это из Vector3 в Transform, тогда это будет хорошо. Я пытался преобразовать это в Transform, но я получил так много ошибок. Я пытался, но это не сработало, как ожидалось.

Вы можете проверить этот скрипт здесь: Сценарий ошибки преобразования

Я получил эти ошибки: Ошибки преобразования

Теперь Сценарий, над которым я работаю, выглядит следующим образом:

using UnityEngine;

 public GameObject enemy; //my enemy
 public float spawnTime = 3f; //spawn after 3 sec
 public List<Vector3> spawnPoints = new List<Vector3> (); //Vector3 positions of spawnpoints.
 public float distance;   //distance from the spawnPoints



 void Start ()
 {
     //spawnRandom ();
     InvokeRepeating ("spawnRandom", spawnTime, spawnTime); //Call this fucntion after 3sec.
 }

 public Vector3 spawnRandom(){

     Vector3 newSpawnPoint;  //new spawn point 
     Vector3 random = UnityEngine.Random.insideUnitSphere * distance;

     newSpawnPoint = new Vector3 (random.x, 0, random.z);

     newSpawnPoint += transform.position;

     if (!spawnPoints.Contains (newSpawnPoint)) {
         return newSpawnPoint;
         spawnPoints.Add (newSpawnPoint);
         int spawnIndex = Random.Range (0, spawnPoints.Count);
         Instantiate (enemy, spawnPoints [spawnIndex].normalized, Quaternion.identity);  //Spawn randomly
     } else {
         return Vector3.zero;}}

Проблема в том, что враг не порождает !

1 Ответ

0 голосов
/ 04 апреля 2020

Почему вы порождаете его в spawnPoints [spawnIndex] .normalized? Вы должны породить его в newSpawnPoint.

Первый оператор в вашем блоке if является оператором возврата. переместите его, чтобы он стал последним.

надеюсь, это поможет

...