在不重叠的情况下在随机生成点生成敌人![不生成]
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 语句。
移到最后一个。
希望对您有所帮助
嗨,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 语句。 移到最后一个。
希望对您有所帮助