在不重叠的情况下在随机生成点生成敌人![不生成]

Spawning enemy at random spawn points without Overlapping![Not spawning]

嗨,Whosebug 的成员,这是我的第一个问题...

我想在不重叠的情况下在随机生成点生成敌人。因此,我正在检查是否使用了生成点,然后不要使用该生成点,如果没有则继续...我有一个空的游戏对象,其中包含敌人的所有生成点。我已将脚本分配给那个空的 gameobejct。

我尝试使用转换作为生成点的列表,但不幸的是,它没有用。如果你能把它从 Vector3 转换成 Transform 那么就很好了。我试图在 Transform 中转换它,但出现了很多错误。我确实试过了,但是,它没有按预期工作。

您可以在此处查看该脚本: Transform error script

我遇到了这些错误: Transform errors

现在,我正在处理的脚本如下:

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;}}

问题是敌人没有生成!

为什么要在 spawnPoints [spawnIndex].normalized 中生成它? 你应该在 newSpawnPoint 中生成它。

if 块中的第一个语句是 return 语句。 移到最后一个。

希望对您有所帮助