嗨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;}}
问题是敌人没有产卵!
为什么在spawnPoints [spawnIndex] .normalized中生成它?您应该在newSpawnPoint中生成它。
if块中的第一条语句是return语句。将其移动到最后一个。
希望有帮助