不产生产卵

时间:2014-10-20 20:52:18

标签: unity3d unityscript

所以我试图在一个项目中设置一个系统,在这个项目中,这些生成点会产生向玩家移动的目标,并且必须在到达某个点或游戏结束之前被摧毁。除了一个问题,一切似乎都很好。产卵者不会停止产卵。他们应该做波浪,在每次波浪完成后产生更多的敌人。我完全错过了错误的位置。 小记,原来我的生成数是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;
    }

}

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);