所以我试图在一个项目中设置一个系统,在这个项目中,这些生成点会产生向玩家移动的目标,并且必须在到达某个点或游戏结束之前被摧毁。除了一个问题,一切似乎都很好。产卵者不会停止产卵。他们应该做波浪,在每次波浪完成后产生更多的敌人。我完全错过了错误的位置。 小记,原来我的生成数是enemyspawncount的3倍,spawnCount会倒数到0,然后跳到2并保持在那里。
修改
所以我解决了无限产卵的问题,但现在只产生一次。我将调试日志放入死亡计数器脚本但它似乎不会一直运行(或者调试日志只显示一次)
Spawner脚本:
var targetPrefab:Transform;
var spawnCount = deathcounter.enemySpawnCount;
function Start()
{
StartCoroutine("CoStart");
}
function CoStart() : IEnumerator
{
while (true)
yield CoUpdate();
}
function CoUpdate(){
while(spawnCount > 0)
{
var target= Instantiate(targetPrefab, transform.position, transform.rotation);
target.rigidbody.AddForce(Vector3.right * (deathcounter.enemySpawnCount *0.5 * 100));
spawnCount = spawnCount - 1;
Debug.Log("Spawn" + spawnCount);
yield WaitForSeconds (5);
}
deathcounter.timeToSpawn = false;
}
目标脚本:
function OnTriggerEnter() {
Destroy (gameObject);
deathcounter.enemyDeathCount = deathcounter.enemyDeathCount + 1;
}
死亡柜台脚本:
static var enemyDeathCount = 0;
static var enemySpawnCount = 1;
static var timeToSpawn : boolean = true;
function Update () {
if(enemyDeathCount % 3 == 0 && enemyDeathCount != 0){
timeToSpawn = true;
enemySpawnCount = enemySpawnCount + 1;
}
}
答案 0 :(得分:1)
问题可以在函数CoUpdate()中。 deathcounter.enemySpawnCount的值在该函数中永远不会减少。因此,如果再次调用CoUpdate(),deathcounter.enemySpawnCount仍将具有相同的值,并且将更多的敌人预制件实例化。
如果这是问题所在,并且我不仅误读了您的代码,您可以在设置spawnCount后设置deathcounter.enemySpawnCount轻松解决:
spawnCount = spawnCount - 1;
deathcounter.enemySpawnCount = spawnCount;
Debug.Log("Spawn" + spawnCount);
Debug.Log("Spawn (double-check) " + deathcounter.enemySpawnCount);