在随机重生点生成敌人而没有重叠![未产生]

问题描述 投票:0回答:1

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

我想在随机的生成点生成敌人而没有重叠。因此,我正在检查是否使用了生成点,如果没有使用该生成点,那么请继续使用...我有一个空的gameObject,其中包含敌人的所有spawnPoints。我已将脚本分配给该空的游戏对象。

我试图使用Transform作为Spawn点的列表,但不幸的是,它没有用。如果您可以将其从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;}}

问题是敌人没有产卵!

list unity3d random spawn overlapping
1个回答
0
投票

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

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

希望有帮助

© www.soinside.com 2019 - 2024. All rights reserved.