在一定程度后提高各种敌人的速度等级和生成率

时间:2014-04-16 10:54:22

标签: unity3d

我有一个团结游戏脚本,我想改进,但我的基本C术语出错了。

我希望增加不同敌人精灵的数量,并通过在每3或4级后增加每种不同敌方精灵的速度和生成率来包括3或4级难度。

我用过

public GameObject enemy;
public GameObject enemy2;
public GameObject enemy3;







// Update is called once per frame
    void Update()
    {
        // Handle the back button on Windows Phone 8
        if (Input.GetKeyDown(KeyCode.Escape))
        {
            HandleBackbutton();
        }

        spawnNewEnemyTimer -= Time.deltaTime;
        if (spawnNewEnemyTimer <= 0)
        {
            spawnNewEnemyTimer = 5;


            int spawnNumberOfEnemies = 1 + (level/2);

            for (int i = 0; i < spawnNumberOfEnemies; i++)
            {
                GameObject enemyToSpawn;
                enemyToSpawn = enemy;

                if (level > 2)
                {
                    float rndEnemy = Random.Range(0.0f, 1.0f);
                    if (rndEnemy > 0.5)
                    {
                        enemyToSpawn = enemy;
                    }
                    else
                    {
                        enemyToSpawn = enemy2;
                    }
            else
            {
                enemyToSpawn = enemy3;                 //GIVING ME ERROR HERE
            }
                }

                float modifier = Random.Range(-1.0f, 1.0f) * 3;

                Instantiate(enemyToSpawn, new Vector3(player.transform.position.x + 20.0f + i * 3,
                       player.transform.position.y + modifier, 0.0f), Quaternion.identity);
            }

            float rndPowerupHp = Random.Range(0.0f, 1.0f);
            if (rndPowerupHp < 0.1)
            {
                Instantiate(hpPowerUp, new Vector3(player.transform.position.x + 30.0f,
                       player.transform.position.y, 0.0f), Quaternion.identity);
            }

            float rndBuilding = Random.Range(0.0f, 1.0f);
            if (rndPowerupHp < 0.5)
            {
                GameObject whatBuilding = building1;

                float rndWhatBulding = Random.Range(0.0f, 1.0f);

                if (rndWhatBulding > 0.5)
                {
                    whatBuilding = building1;
                }
                else
                {
                    whatBuilding = building2;
                }

                Instantiate(whatBuilding, new Vector3(player.transform.position.x + 30.0f,
                        0.0f, 0.005f), Quaternion.identity);
            }
        }

但是它给了我错误。

1 个答案:

答案 0 :(得分:0)

问题很可能是由于您的缩进不当造成的。这会导致您在涉及大括号时出错:

这部分代码

            if (level > 2)
            {
                float rndEnemy = Random.Range(0.0f, 1.0f);
                if (rndEnemy > 0.5)
                {
                    enemyToSpawn = enemy;
                }
                else
                {
                    enemyToSpawn = enemy2;
                }
        else
        {
            enemyToSpawn = enemy3;                 //GIVING ME ERROR HERE
        }
            }

正确缩进时看起来像这样:

if (level > 2)
{
    float rndEnemy = Random.Range(0.0f, 1.0f);
    if (rndEnemy > 0.5)
    {
        enemyToSpawn = enemy;
    }
    else
    {
        enemyToSpawn = enemy2;
    }
    else
    {
        enemyToSpawn = enemy3;                 //GIVING ME ERROR HERE
    }
}

这应该使错误非常明显。在初始版本之后,您有第二个else语句。那不会飞。

因此,请务必检查您的缩进。这将有助于您预防或识别此类错误。