Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unity3d 不产卵_Unity3d_Unityscript - Fatal编程技术网

Unity3d 不产卵

Unity3d 不产卵,unity3d,unityscript,Unity3d,Unityscript,因此,我试图在一个项目中建立一个系统,在这个系统中,这些繁殖点将繁殖目标,这些目标会向玩家移动,并且必须在到达某个点或游戏结束之前被摧毁。除了一个问题外,一切似乎都很顺利。产卵者不会停止产卵。他们应该做波浪,在每个波浪结束后产生更多的敌人。我完全不知道错误在哪里。 小提示,最初我的繁殖计数是敌人PawnCount的3倍,繁殖计数将向下计数为0,然后跳到2并保持不变 编辑 所以我修正了无限繁殖的问题,但是现在它只繁殖一次。我将调试日志放入死亡计数器脚本中,但它似乎没有持续运行(或者调试日志只显示一

因此,我试图在一个项目中建立一个系统,在这个系统中,这些繁殖点将繁殖目标,这些目标会向玩家移动,并且必须在到达某个点或游戏结束之前被摧毁。除了一个问题外,一切似乎都很顺利。产卵者不会停止产卵。他们应该做波浪,在每个波浪结束后产生更多的敌人。我完全不知道错误在哪里。 小提示,最初我的繁殖计数是敌人PawnCount的3倍,繁殖计数将向下计数为0,然后跳到2并保持不变

编辑

所以我修正了无限繁殖的问题,但是现在它只繁殖一次。我将调试日志放入死亡计数器脚本中,但它似乎没有持续运行(或者调试日志只显示一次)

产卵器脚本:

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

}
目标脚本:

function OnTriggerEnter() { 
    Destroy (gameObject);
    deathcounter.enemyDeathCount = deathcounter.enemyDeathCount + 1;
}
死亡计数器脚本:

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

}
问题可能在函数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);

你写过“他们应该做波浪,在每个波浪结束后产生更多的敌人。”你的意思是“在玩家杀死一个波浪中的所有敌人之后?”如果是这样,玩家可以使用的一种策略是留下一个敌人,然后躲避它。因为那样的话,另一个浪潮就不会产生了。(我想了一下,想指出一下。)是的,但是如果他们在距离太近之前没有击中所有的敌人,他们就会输掉比赛。好吧,我明白了。说得通,离那不远了。我决定删除将spawnCount设置为enemySpawnCount的行,它可以正常工作。酷!自从我使用Unity3D已经有几年了,我认为你的代码比你在问题中提到的片段要多得多,所以我很高兴我的猜测为你指明了正确的方向。(如果你想给我的答案投赞成票,我将不胜感激。)如果我有这样的名声,我会的。哦!我不知道这是一个要求。哦,好吧!无论如何谢谢你!很高兴你成功了!我不是真的,我只是让它停止无限繁殖。现在,在第一波之后,它根本就不会繁殖。