示例#1
0
    //boss被击中时回调改方法
    void OnHit(float energy)
    {
        blood -= energy;
        if (blood < halfBlood && !underHalfBlood)
        {
            underHalfBlood = true;
            //半血时回调
            bossController.OnBossHalfBlood(blood);
        }
        else if (blood < quarterBlood && !underQuarterBlood)
        {
            underQuarterBlood = true;
            // 四分之一血时回调
            bossController.OnBossQuarterBlood(blood);
        }

        // 没血了销毁自身,弹出MissionCompleted提示
        if (blood <= 0)
        {
            Destroy(gameObject);
            Instantiate(explosion, transform.position, Quaternion.identity);
            GameObject parent = GameObject.Find("EnemyController");
            GeneratorHelper.GeneratorGameObject(new Vector3(0f, 3f, -5f), missionCompleted, parent);
        }
    }
示例#2
0
 private static IEnumerator GenerateEnemies(GameObject prefab, int count, Vector3 birthPosition, MovementArg arg, GameObject parent, float gapTime)
 {
     for (int i = 0; ;)
     {
         GameObject enemy = GeneratorHelper.GeneratorGameObject(birthPosition, prefab, parent);
         enemy.SendMessage("StartMove", arg);
         i++;
         if (i < count)
         {
             yield return(new WaitForSeconds(gapTime));
         }
         else
         {
             break;
         }
     }
 }
示例#3
0
    //第一关的关卡流程
    //关卡流程设计每个人负责大概30s长度,之后进行整合
    private IEnumerator scenario()
    {
        /***************************************************************Part1*****************************************************/
        //5s
        yield return(new WaitForSeconds(5));

        GeneratorHelper.GeneratorGameObject(new Vector3(1.9f, 0.89f, -5), sprayMonsterPrefab, enemyParent);
        //从屏幕上方出现3个敌机
        ShowLineMovementEnemies(enemyPrefab1, 3, new Vector3(0.5f, 1.5f, -5), new Vector3(0.5f, 0, -5));
        //从屏幕下方出现3个敌机
        ShowLineMovementEnemies(enemyPrefab1, 3, new Vector3(1.0f, -1.5f, -5), new Vector3(1.0f, 0f, -5));
        //10s
        yield return(new WaitForSeconds(5));

        //yield return new WaitForSeconds(2);
        //从屏幕右边直线进入3个敌机
        // ShowLineMovementEnemies(enemyPrefab1, 1, new Vector3(2.5f, 0.3f, -5), new Vector3(0, 0.3f, -5));
        // ShowLineMovementEnemies(enemyPrefab1, 1, new Vector3(2.5f, 0, -5), new Vector3(0, 0, -5));
        // ShowLineMovementEnemies(enemyPrefab1, 1, new Vector3(2.5f, -0.3f, -5), new Vector3(0, -0.3f, -5));

        ShowLineMovementEnemies(monsterPrefab, 1, new Vector3(2.5f, 0.3f, -5), new Vector3(0, 0.3f, -5));
        ShowLineMovementEnemies(monsterPrefab, 1, new Vector3(2.5f, 0, -5), new Vector3(0, 0, -5));
        ShowLineMovementEnemies(monsterPrefab, 1, new Vector3(2.5f, -0.3f, -5), new Vector3(0, -0.3f, -5));


        //15s
        yield return(new WaitForSeconds(5));

        //上方 下方V字型出现
        ShowVeeMovementEnemies(enemyPrefab1, 3, new Vector3(2.5f, 2.5f, -5), new Vector3(0, 0, -5), 0.3f);
        ShowVeeMovementEnemies(enemyPrefab1, 3, new Vector3(2.5f, -2.5f, -5), new Vector3(0, 0, -5), 0.3f);
        //20s
        yield return(new WaitForSeconds(5));

        //从右侧出现3个直线运动敌人 3个驻停敌人
        ShowLineMovementEnemies(enemyPrefab2, 1, new Vector3(2.5f, 0.3f, -5), new Vector3(0, 0.3f, -5));
        ShowLineMovementEnemies(enemyPrefab3, 1, new Vector3(2.5f, 0, -5), new Vector3(0, 0, -5));
        ShowLineMovementEnemies(enemyPrefab2, 1, new Vector3(2.5f, -0.3f, -5), new Vector3(0, -0.3f, -5));
        ShowEnterAnchorEnemies(enemyPrefab2, 1, new Vector3(2.5f, 0.3f, -5), new Vector3(0, 0.3f, -5));
        ShowEnterAnchorEnemies(enemyPrefab2, 1, new Vector3(2.5f, 0, -5), new Vector3(0, 0, -5));
        ShowEnterAnchorEnemies(enemyPrefab2, 1, new Vector3(2.5f, -0.3f, -5), new Vector3(0, -0.3f, -5));
        //25s
        yield return(new WaitForSeconds(10));

        //从屏幕上方顺序进入3个敌机,然后从下方出去
        ShowLineMovementEnemies(enemyPrefab3, 5, new Vector3(2.5f, 0.2f, -5), new Vector3(0, 0.3f, -5));
        ShowLineMovementEnemies(enemyPrefab1, 5, new Vector3(2.5f, -0.2f, -5), new Vector3(0, -0.3f, -5));
        /***************************************************************Part2*****************************************************/
        yield return(new WaitForSeconds(2));

        ShowLineMovementEnemies(enemyPrefab1, 3, new Vector3(2.5f, 0, -5),
                                new Vector3(Random.Range(0f, 1.4f), Random.Range(-0.5f, 0.5f), -5));
        yield return(new WaitForSeconds(3)); //0-5s

        ShowLineMovementEnemies(enemyPrefab2, 3, new Vector3(2.5f, 0.3f, -5),
                                new Vector3(Random.Range(0f, 1.4f), Random.Range(-0.5f, 0.5f), -5));
        yield return(new WaitForSeconds(2));

        ShowVeeMovementEnemies(enemyPrefab2, 3, new Vector3(Random.Range(0f, 1f), 1f, -5), new Vector3(0, 0, -5), 0.3f);
        ShowVeeMovementEnemies(enemyPrefab1, 3, new Vector3(Random.Range(0f, 1f), -1f, -5), new Vector3(0, 0, -5), 0.3f);

        yield return(new WaitForSeconds(3)); //5-10s

        ShowLineMovementEnemies(enemyPrefab1, 3, new Vector3(2.5f, 0, -5),
                                new Vector3(Random.Range(0f, 1.4f), Random.Range(-0.5f, 0.5f), -5));
        yield return(new WaitForSeconds(1));

        ShowEnterAnchorEnemies(enemyPrefab1, 1, new Vector3(1f, 1f, -5), new Vector3(1, 0.6f, -5));
        ShowEnterAnchorEnemies(enemyPrefab2, 1, new Vector3(1f, 1f, -5), new Vector3(1, 0.3f, -5));
        ShowEnterAnchorEnemies(enemyPrefab1, 1, new Vector3(1f, 1f, -5), new Vector3(1, 0, -5));
        //ShowEnterAnchorEnemies(enemyPrefab1, 1, new Vector3(1f, 1f, -5), new Vector3(1, -0.3f, -5));
        //ShowEnterAnchorEnemies(enemyPrefab1, 1, new Vector3(0.7f, -1f, -5), new Vector3(0, 0.3f, -5));
        ShowEnterAnchorEnemies(enemyPrefab2, 1, new Vector3(0.7f, -1f, -5), new Vector3(0, 0, -5));
        ShowEnterAnchorEnemies(enemyPrefab3, 1, new Vector3(0.7f, -1f, -5), new Vector3(0, -0.3f, -5));
        ShowEnterAnchorEnemies(enemyPrefab1, 1, new Vector3(0.7f, -1f, -5), new Vector3(0, -0.6f, -5));
        //yield return new WaitForSeconds(4); //10-15s
        yield return(new WaitForSeconds(1));

        ShowEnterAnchorEnemies(enemyPrefab1, 1, new Vector3(1.3f, 1f, -5), new Vector3(1.3f, 0.9f, -5));
        ShowEnterAnchorEnemies(enemyPrefab1, 1, new Vector3(1.3f, 1f, -5), new Vector3(1.3f, 0.6f, -5));
        //ShowEnterAnchorEnemies(enemyPrefab1, 1, new Vector3(1.3f, 1f, -5), new Vector3(1.3f, 0.3f, -5));;
        //ShowEnterAnchorEnemies(enemyPrefab1, 1, new Vector3(1.3f, -1f, -5), new Vector3(0, -0.3f, -5));
        ShowEnterAnchorEnemies(enemyPrefab1, 1, new Vector3(1.3f, -1f, -5), new Vector3(0, -0.6f, -5));
        ShowEnterAnchorEnemies(enemyPrefab1, 1, new Vector3(1.3f, -1f, -5), new Vector3(0, -0.9f, -5));
        yield return(new WaitForSeconds(2));

        ShowVeeMovementEnemies(enemyPrefab3, 2, new Vector3(0, 1f, -5), new Vector3(0, 0, -5), 0.3f);
        ShowVeeMovementEnemies(enemyPrefab1, 2, new Vector3(0, -1f, -5), new Vector3(0, 0, -5), 0.3f);
        yield return(new WaitForSeconds(2)); //15-20s

        yield return(new WaitForSeconds(3));

        ShowLineMovementEnemies(enemyPrefab1, 3, new Vector3(2.5f, 0, -5),
                                new Vector3(0, 0, -5));
        yield return(new WaitForSeconds(2)); //20-25s

        ShowLineMovementEnemies(enemyPrefab3, 5, new Vector3(2.5f, 0, -5),
                                new Vector3(Random.Range(0f, 1f), Random.Range(-1f, 1f), -5));
        ShowVeeMovementEnemies(enemyPrefab1, 1, new Vector3(0.2f, 1f, -5), new Vector3(0, 0, -5), 0.3f);
        ShowVeeMovementEnemies(enemyPrefab1, 1, new Vector3(-0.2f, -1f, -5), new Vector3(0, 0, -5), 0.3f);
        /***************************************************************Part3*****************************************************/
        //从屏幕右边直线进入3个敌机
        ShowLineMovementEnemies(enemyPrefab1, 3, new Vector3(2.5f, 0.3f, -5), new Vector3(0, 0.3f, -5));
        yield return(new WaitForSeconds(5));

        //从屏幕右边直线进入3个敌机
        ShowLineMovementEnemies(enemyPrefab2, 3, new Vector3(2.5f, 0.3f, -5), new Vector3(0, 0.3f, -5));
        //从屏幕右上角斜线进入3个敌机,然后在屏幕中间点(0,9,-5)停驻0.3s,后从屏幕右下方飞出去
        ShowVeeMovementEnemies(enemyPrefab1, 3, new Vector3(2.5f, 2.5f, -5), new Vector3(0, 0, -5), 0.3f);
        //移动方式同上一个,但是从右下方飞入,右上方飞出
        ShowVeeMovementEnemies(enemyPrefab1, 3, new Vector3(2.5f, -2.5f, -5), new Vector3(0, 0, -5), 0.3f);
        yield return(new WaitForSeconds(3));

        //从屏幕右边直线进入3个敌机
        ShowLineMovementEnemies(enemyPrefab3, 3, new Vector3(2.5f, -0.3f, -5), new Vector3(0, 0.3f, -5));
        //从屏幕右侧水平成排进入4个敌人,然后停在屏幕中某一点(0.3f,2f,-5)
        ShowEnterAnchorEnemies(enemyPrefab1, 4, new Vector3(2.5f, 0.5f, -5), new Vector3(0.3f, 0.5f, -5));
        //移动方式同上一行,但是是对称的
        ShowEnterAnchorEnemies(enemyPrefab2, 2, new Vector3(2.5f, -0.5f, -5), new Vector3(0.3f, -0.5f, -5));
        yield return(new WaitForSeconds(1));

        ShowEnterAnchorEnemies(enemyPrefab3, 2, new Vector3(2.5f, -0.5f, -5), new Vector3(0.3f, -0.5f, -5));

        yield return(new WaitForSeconds(7));

        //从屏幕上方顺序进入3个敌机,然后从下方出去
        ShowLineMovementEnemies(enemyPrefab1, 3, new Vector3(1f, 2.5f, -5), new Vector3(1f, -2.5f, -5));
        //移动轨迹类似上一行代码,但是从下方进入,上方出去
        ShowLineMovementEnemies(enemyPrefab1, 3, new Vector3(0.5f, -2.5f, -5), new Vector3(0.5f, 2.5f, -5));

        yield return(new WaitForSeconds(2));

        //从屏幕右上方进入一个敌机,从屏幕左下方离开
        ShowLineMovementEnemies(enemyPrefab1, 1, new Vector3(2f, 0.6f, -5), new Vector3(-0.5f, 0, -5));
        //从屏幕右下方进入一个敌机,从屏幕左上方离开
        ShowLineMovementEnemies(enemyPrefab2, 1, new Vector3(2f, -0.6f, -5), new Vector3(-0.5f, 0, -5));
        //从屏幕右侧正中进入一个敌人,沿直线从左侧退出
        ShowLineMovementEnemies(enemyPrefab3, 1, new Vector3(2f, 0, -5), new Vector3(0, 0, -5));
        yield return(new WaitForSeconds(0.5f));

        //从左上方顺序进入四辆敌机,在屏幕中间转向,后从屏幕左下方离开
        ShowVeeMovementEnemies(enemyPrefab1, 4, new Vector3(0, 1f, -5), new Vector3(1, 0, -5), 0);
        //类似上一种敌机,但是移动轨迹对称
        ShowVeeMovementEnemies(enemyPrefab1, 4, new Vector3(0, -1, -5), new Vector3(1, 0, -5), 0);

        yield return(new WaitForSeconds(5));

        //下面四句,都是产生一个从屏幕右侧进入的敌机,直线水平运动,但是四个是同时进入的
        ShowLineMovementEnemies(enemyPrefab1, 2, new Vector3(2f, 0.6f, -5), new Vector3(0, 0.6f, -5));
        ShowLineMovementEnemies(enemyPrefab2, 2, new Vector3(2f, 0.3f, -5), new Vector3(0, 0.3f, -5));
        ShowLineMovementEnemies(enemyPrefab2, 2, new Vector3(2f, -0.6f, -5), new Vector3(0, -0.6f, -5));
        ShowLineMovementEnemies(enemyPrefab1, 2, new Vector3(2f, -0.3f, -5), new Vector3(0, -0.3f, -5));

        yield return(new WaitForSeconds(0.5f));

        //从屏幕上方依次进入四架敌机,沿垂直直线运动
        ShowLineMovementEnemies(enemyPrefab1, 4, new Vector3(0, 1f, -5), new Vector3(0, -1f, -5));
        //类似上一个,方向相反
        ShowLineMovementEnemies(enemyPrefab1, 4, new Vector3(0.1f, -1f, -5), new Vector3(0.1f, 1f, -5));
        /***************************************************************Part4*****************************************************/
        //--3个一列横排定点出现
        yield return(new WaitForSeconds(5));

        ShowEnterAnchorEnemies(enemyPrefab2, 1, new Vector3(1.7f, 0.3f, -5), new Vector3(1.5f, 0.3f, -5));
        ShowEnterAnchorEnemies(enemyPrefab3, 1, new Vector3(1.7f, 0f, -5), new Vector3(1.5f, 0f, -5));
        ShowEnterAnchorEnemies(enemyPrefab1, 1, new Vector3(1.7f, -0.3f, -5), new Vector3(1.5f, -0.3f, -5));

        //--3个一列横排定点出现和两侧出现
        yield return(new WaitForSeconds(5));

        //3个一列横排定点出现
        ShowEnterAnchorEnemies(enemyPrefab1, 1, new Vector3(1.7f, 0.3f, -5), new Vector3(1.5f, 0.3f, -5));
        ShowEnterAnchorEnemies(enemyPrefab1, 1, new Vector3(1.7f, 0f, -5), new Vector3(1.5f, 0f, -5));
        ShowEnterAnchorEnemies(enemyPrefab1, 1, new Vector3(1.7f, -0.3f, -5), new Vector3(1.5f, -0.3f, -5));
        //两侧出现
        ShowVeeMovementEnemies(enemyPrefab1, 1, new Vector3(1.5f, 0.9f, -5), new Vector3(1.5f, 0.65f, -5), 3);
        ShowVeeMovementEnemies(enemyPrefab1, 1, new Vector3(1.2f, 0.9f, -5), new Vector3(1.2f, 0.65f, -5), 3);
        ShowVeeMovementEnemies(enemyPrefab1, 1, new Vector3(0.9f, 0.9f, -5), new Vector3(0.9f, 0.65f, -5), 3);
        ShowVeeMovementEnemies(enemyPrefab1, 1, new Vector3(1.5f, -0.9f, -5), new Vector3(1.5f, -0.65f, -5), 3);
        ShowVeeMovementEnemies(enemyPrefab1, 1, new Vector3(1.2f, -0.9f, -5), new Vector3(1.2f, -0.65f, -5), 3);
        ShowVeeMovementEnemies(enemyPrefab1, 1, new Vector3(0.9f, -0.9f, -5), new Vector3(0.9f, -0.65f, -5), 3);

        //--2行出现
        yield return(new WaitForSeconds(5));

        //4个一列横排出现
        ShowLineMovementEnemies(enemyPrefab2, 4, new Vector3(1.7f, 0.35f, -5), new Vector3(1.5f, 0.35f, -5));
        //4个一列横排出现
        ShowLineMovementEnemies(enemyPrefab3, 4, new Vector3(1.7f, -0.35f, -5), new Vector3(1.5f, -0.35f, -5));

        //--2列出现,一行从上之下,一行从下至上
        yield return(new WaitForSeconds(5));

        ShowEnterAnchorEnemies(enemyPrefab1, 1, new Vector3(1.1f, 1.4f, -5), new Vector3(1.1f, 0.3f, -5));
        ShowEnterAnchorEnemies(enemyPrefab2, 1, new Vector3(1.1f, 1.1f, -5), new Vector3(1.1f, 0f, -5));
        ShowEnterAnchorEnemies(enemyPrefab3, 1, new Vector3(1.1f, 0.8f, -5), new Vector3(1.1f, -0.3f, -5));
        ShowEnterAnchorEnemies(enemyPrefab3, 1, new Vector3(1.5f, -1.4f, -5), new Vector3(1.5f, -0.3f, -5));
        ShowEnterAnchorEnemies(enemyPrefab2, 1, new Vector3(1.5f, -1.1f, -5), new Vector3(1.5f, 0, -5));
        ShowEnterAnchorEnemies(enemyPrefab1, 1, new Vector3(1.5f, -0.8f, -5), new Vector3(1.5f, -0.3f, -5));

        //--3个一列横排定点出现
        yield return(new WaitForSeconds(5));

        ShowEnterAnchorEnemies(enemyPrefab1, 1, new Vector3(1.7f, 0.3f, -5), new Vector3(1.5f, 0.3f, -5));
        ShowEnterAnchorEnemies(enemyPrefab1, 1, new Vector3(1.7f, 0f, -5), new Vector3(1.5f, 0f, -5));
        ShowEnterAnchorEnemies(enemyPrefab1, 1, new Vector3(1.7f, -0.3f, -5), new Vector3(1.5f, -0.3f, -5));

        //--两侧出现
        ShowVeeMovementEnemies(enemyPrefab1, 1, new Vector3(1.5f, 0.9f, -5), new Vector3(1.5f, 0.65f, -5), 3);
        ShowVeeMovementEnemies(enemyPrefab1, 1, new Vector3(1.2f, 0.9f, -5), new Vector3(1.2f, 0.65f, -5), 3);
        ShowVeeMovementEnemies(enemyPrefab1, 1, new Vector3(0.9f, 0.9f, -5), new Vector3(0.9f, 0.65f, -5), 3);
        ShowVeeMovementEnemies(enemyPrefab1, 1, new Vector3(1.5f, -0.9f, -5), new Vector3(1.5f, -0.65f, -5), 3);
        ShowVeeMovementEnemies(enemyPrefab1, 1, new Vector3(1.2f, -0.9f, -5), new Vector3(1.2f, -0.65f, -5), 3);
        ShowVeeMovementEnemies(enemyPrefab1, 1, new Vector3(0.9f, -0.9f, -5), new Vector3(0.9f, -0.65f, -5), 3);
    }
示例#4
0
 GameObject GenerateWarning(Vector3 position)
 {
     return(GeneratorHelper.GeneratorGameObject(position, warning, gameObject.transform.parent.gameObject));
 }
示例#5
0
 public static GameObject GenerateBullets(GameObject prefab, Vector3 position, GameObject parent)
 {
     return(GeneratorHelper.GeneratorGameObject(position, prefab, parent));
 }