所以基本上我有一个产卵脚本(2D游戏),它会在产生延迟后产生一个敌人。我还添加了一系列敌人预制件,以便SpawnerScript能够随机产生敌人。但是我在变换中随机位置的预制件中产生了一些问题(a.k.a:3D立方体)。当我玩游戏时,你看到我的产生者并没有产生任何东西,我确保我已经包含了我想要产生多少敌人的大小。并确保我已经附加了我的预制件。我还确保我的统一项目文件没有错误。也许我的代码错了,我不确定。
我的SpawnerScript:
public float RateOfSpawn = 1;
public float spawnTime = 2;
public GameObject[] enemy;
void Start(){
InvokeRepeating ("addEnemy", spawnTime, spawnTime);
}
void Spawn () {
// Random position within this transform- 3Dcube
var x1 = transform.position.x - GetComponent<Renderer> ().bounds.size.x / 2;
var x2 = transform.position.x + GetComponent<Renderer> ().bounds.size.x / 2;
var spawnPoint = new Vector2 (Random.Range (x1, x2), transform.position.y);
int enemyIndex = enemy.Length;
Instantiate (enemy[enemyIndex],spawnPoint,Quaternion.identity);
}
}
谢谢:)
答案 0 :(得分:1)
您必须调用正确的功能才能使其正常工作。
void Start()
{
InvokeRepeating ("Spawn", spawnTime, spawnTime);
}
您必须致电"Spawn"
而不是"addEnemy"
。
同时更改Instanatiate
以进行正确的实例化。
Instantiate (enemy[Random.Range (0, enemyIndex)], spawnPoint, Quaternion.identity);
enemy[Random.Range (0, enemyIndex)]
可帮助您从敌人的索引0
到enemyIndex-1
中选择随机敌人。
异常的原因是将数组的长度作为索引。最大索引限制始终为length-1。