コード例 #1
0
    void Init()
    {
        isPlay = false;

        enemySpawnDelayTimer = 0f;
        nodeDelayTimer       = 0f;
        nowNodeNum           = 0;
        nowSpawnEnemyNum     = 0;

        nodeDelaying   = true;
        spawnsDelaying = false;

        ptObject = Resources.LoadAll("Prefabs/EnemyPrefab");

        patterns = new EnemyPattern[ptObject.Length];

        for (int i = 0; i < patterns.Length; ++i)
        {
            GameObject ptObj = (GameObject)ptObject[i];
            patterns[i] = ptObj.GetComponent <EnemyPattern>();

            if (patterns[i].patternLv == EnemyPatternLevel.Fever)
            {
                feverPattern = patterns[i];
            }
        }
    }
コード例 #2
0
    void Init()
    {
        _state          = State.Stop;
        _size           = transform.localScale.x;
        _attackInterval = 6f;
        if (this.gameObject.name.Contains("SnowRiceField"))
        {
            //スノーライスフィールド
            _pattern = EnemyPattern.SnowRiceField;
        }
        else if (this.gameObject.name.Contains("Suspenders"))
        {
            //サスペンダー
            _pattern = EnemyPattern.Suspenders;
        }
        else if (this.gameObject.name.Contains("DarkHorse"))
        {
            //害悪馬(DarkHorse)
            _pattern = EnemyPattern.DarkHorse;
        }
        else if (this.gameObject.name.Contains("Python"))
        {
            _pattern = EnemyPattern.Python;
        }
        else
        {
            _pattern = 0;
        }

        _poseManager = GetComponent <PoseManager>();
        _animator    = GetComponent <Animator>();
        Debug.Log("Animator:" + _animator);
        _rigidbody2D = GetComponent <Rigidbody2D>();
        _audioSource = GetComponent <AudioSource>();
    }
コード例 #3
0
 // Use this for initialization
 void Start()
 {
     enemy        = gameObject.transform.parent.gameObject;
     enemymove    = enemy.GetComponent <EnemyMove> ();
     enemyPattern = enemy.GetComponent <EnemyPattern>();
     player       = GameObject.Find("PlayerMove");
 }
コード例 #4
0
ファイル: GameManager.cs プロジェクト: jwi2018/RomanceTrain
    void SpawnPattern(EnemyPattern pattern)
    {
        switch (pattern)
        {
        case EnemyPattern.TestEnemy:
        {        //뱀 랜덤위치에 소환
                 //랜덤 Y값 생성
                 //float randomX = Random.Range(-0f, 0f);
                 //float X = 4f;

            ////랜덤 X값 저장
            //Vector3 pos = new Vector3(randomX, 16f, 0f);


            ////뱀 오프셋
            //Vector3 offset = new Vector3(4f, 0f, 0f);

            //뱀 생성
            if (TestEnemycount >= 5)
            {
                TestEnemycount = 0;
            }

            StartCoroutine(SpawnTestEnemy(/*transform.position*/));

            break;
        }
        }
    }
コード例 #5
0
 void SelectFeverPattern()
 {
     selectedPt       = feverPattern;
     nowNodeNum       = 0;
     nowSpawnEnemyNum = 0;
     nodeDelaying     = true;
     spawnsDelaying   = false;
 }
コード例 #6
0
ファイル: Enemy.cs プロジェクト: Plunderer/Plunderer
    void Start()
    {
        AudioSource[] audioSources = GetComponents <AudioSource>();
        sound01 = audioSources[5];

        ads            = GameObject.Find("PlayerMove");
        advantageshift = ads.GetComponent <AdvantageShift>();
        enemyPattern   = GetComponent <EnemyPattern>();
    }
コード例 #7
0
 // Use this for initialization
 void Start()
 {
     // このobjectのSpriteRendererを取得
     MainSpriteRenderer        = gameObject.GetComponent <SpriteRenderer>();
     MainSpriteRenderer.sprite = normalSprite;
     enemyPattern = new EnemyPatternStart();
     enemyPattern.Init(this);
     bulletPattern = new EnemyBulletPatternNone();
     player        = GameObject.FindGameObjectWithTag("Player").GetComponent <Player>();
 }
コード例 #8
0
ファイル: GameManager.cs プロジェクト: ionizn/RomanceTrain
    void SpawnPattern(EnemyPattern pattern)
    {
        switch (pattern)
        {
        case EnemyPattern.Stage1Enemy:
        {
            if (TestEnemycount >= 21)
            {
                TestEnemycount = 0;
            }

            StartCoroutine(Stage1Enemy(/*transform.position*/));

            break;
        }

        case EnemyPattern.Stage2Enemy:
        {
            if (TestEnemycount >= 41)
            {
                TestEnemycount = 0;
            }

            StartCoroutine(Stage2Enemy(/*transform.position*/));

            break;
        }

        case EnemyPattern.Stage3Enemy:
        {
            if (TestEnemycount >= 81)
            {
                TestEnemycount = 0;
            }

            StartCoroutine(Stage3Enemy(/*transform.position*/));

            break;
        }

        case EnemyPattern.Stage4Enemy:
        {
            if (TestEnemycount >= 101)
            {
                TestEnemycount = 0;
            }

            StartCoroutine(Stage4Enemy(/*transform.position*/));

            break;
        }
        }
    }
コード例 #9
0
    void OnEnable()
    {
        nodeNum       = serializedObject.FindProperty("nodeNum");
        nodeData      = serializedObject.FindProperty("nodeData");
        spawnDelayMin = serializedObject.FindProperty("spawnDelayMin");
        spawnDelayMax = serializedObject.FindProperty("spawnDelayMax");

        enemyInfoFold = serializedObject.FindProperty("enemyInfoFold");
        nodeInfoFold  = serializedObject.FindProperty("nodeInfoFold");
        enemyInfoFold = serializedObject.FindProperty("enemyInfoFold");

        EnemyPattern enemyPattern = (EnemyPattern)target;
    }
コード例 #10
0
ファイル: Vampire.cs プロジェクト: akbiggs/Zombies
 public Vampire(World world, Vector2 position, EnemyPattern pattern)
     : base(world, position, Vector2.Zero, new Vector2(SIZE_X, SIZE_Y), new List<AnimationSet>
     {
         new AnimationSet("Main", TextureBin.Get("FlyerRed2"), 3, 16, 3, true, 0)
     }, "Main", false, false, HEALTH)
 {
     attackPattern = pattern;
     if (position.Y < world.Player.Position.Y)
     {
         maxHeight = Engine.ScreenResolution.Y - position.Y;
         minHeight = position.Y;
     }
     else
         maxHeight = position.Y;
     minHeight = (Engine.ScreenResolution.Y - position.Y) * 2;
 }
コード例 #11
0
ファイル: jackenemy.cs プロジェクト: Plunderer/Plunderer
 // Use this for initialization
 void Start()
 {
     en = gameObject.GetComponent <Enemy>();
     if (en == null)
     {
         gameObject.GetComponent <boss1enemy>();
     }
     enemyPattern = gameObject.GetComponent <EnemyPattern>();
     ads          = GameObject.Find("PlayerMove").GetComponent <AdvantageShift>();
     if (gameObject.GetComponent <EnemyPattern>())
     {
         patan = true;
     }
     //this.tag = ("Player");
     enemyPattern.player = serchTag(gameObject, "Enemy").transform;
 }
コード例 #12
0
    void SelectRandomPattern()
    {
        if (isFever)
        {
            selectedPt = feverPattern;
        }
        else if (test)
        {
            selectedPt = patterns[testPtNum];
        }
        else
        {
            selectedPt = patterns[Random.Range(0, patterns.Length)];
        }

        nowNodeNum       = 0;
        nowSpawnEnemyNum = 0;
        nodeDelaying     = true;
        spawnsDelaying   = false;
    }
コード例 #13
0
 void Init()
 {
     _animator    = GetComponent <Animator>();
     _rigidbody2D = GetComponent <Rigidbody2D>();
     _audioSource = GetComponent <AudioSource>();
     _size        = transform.localScale.x;
     if (this.gameObject.name.Contains("Ikilipse"))
     {
         _pattern = EnemyPattern.Ikilipse;
     }
     else if (this.gameObject.name.Contains("Blender"))
     {
         _pattern = EnemyPattern.Blender;
     }
     else if (this.gameObject.name.Contains("Skyper"))
     {
         _pattern = EnemyPattern.Skyper;
     }
     else if (this.gameObject.name.Contains("FireChrome"))
     {
         _pattern = EnemyPattern.FireChrome;
     }
 }
コード例 #14
0
    private void SpawnNext(int centerOffset = 0)
    {
        var next = _curPattern.GetNext();

        if (next != null)
        {
            _lastSpawned2 = _lastSpawned1;
            _lastSpawned1 = next;
            var v = next.transform.position;
            v.x += v.x > 0 ? -centerOffset : centerOffset;
            next.transform.position = v;
            Unit u;
            if (Level.Tutorial && _2hpTutorialSpawned < 1 && (u = next.GetComponent <Unit>()).HP == 2)
            {
                _2hpTutorialSpawned++;
                var uh = UnitHint.CreateUnitText("^\n2 HP", u);
                Utils.Animate(new Color(0.3f, 0.3f, 0.3f), new Color(0.9f, 0.9f, 0.9f), 3f, (c) =>
                {
                    uh.Tint.Color = c;
                }, null, true);
            }
        }
        if (!_curPattern.Ended())
        {
            return;
        }

        _curPattern.Reset();
        if (_cl >= _patterns.Count)
        {
            return;
        }
        _ci        += Random.Range(1, _patterns[_cl].Count - 1);
        _ci        %= _patterns[_cl].Count;
        _curPattern = _patterns[_cl][_ci];
    }
コード例 #15
0
    public override void OnInspectorGUI()
    {
        EditorGUI.BeginChangeCheck();
        //base.OnInspectorGUI();    //기본 인스페거에 오버라이딩 됨
        serializedObject.Update();

        EditorGUIUtility.LookLikeInspector();

        EnemyPattern enemyPattern = (EnemyPattern)target;

        EditorGUILayout.Space();


        #region PatternMinMaxSetting

        enemyPattern.patternSettingFold = EditorGUILayout.Foldout(enemyPattern.patternSettingFold, "Pattern Setting");
        if (enemyPattern.patternSettingFold)
        {
            ++EditorGUI.indentLevel;
            EditorGUILayout.LabelField("SpawnDelay MinMax Setting", EditorStyles.boldLabel);
            EditorGUILayout.MinMaxSlider(ref enemyPattern.spawnDelayMin, ref enemyPattern.spawnDelayMax, 0f, 50f);
            EditorGUILayout.BeginHorizontal();
            enemyPattern.spawnDelayMin = EditorGUILayout.FloatField(enemyPattern.spawnDelayMin);
            enemyPattern.spawnDelayMax = EditorGUILayout.FloatField(enemyPattern.spawnDelayMax);
            EditorGUILayout.EndHorizontal();

            EditorGUILayout.Space();

            //EditorGUILayout.LabelField("Hp MinMax Setting", EditorStyles.boldLabel);
            //EditorGUILayout.BeginHorizontal();
            //enemyPattern.enemyHpMin = EditorGUILayout.IntField(enemyPattern.enemyHpMin);
            //enemyPattern.enemyHpMax = EditorGUILayout.IntField(enemyPattern.enemyHpMax);
            //EditorGUILayout.EndHorizontal();

            EditorGUILayout.Space();

            EditorGUILayout.LabelField("Speed MinMax Setting", EditorStyles.boldLabel);
            EditorGUILayout.BeginHorizontal();
            enemyPattern.enemySpeedMin = EditorGUILayout.FloatField(enemyPattern.enemySpeedMin);
            enemyPattern.enemySpeedMax = EditorGUILayout.FloatField(enemyPattern.enemySpeedMax);
            EditorGUILayout.EndHorizontal();


            --EditorGUI.indentLevel;
        }
        EditorGUILayout.Space();
        EditorGUILayout.Space();

        #endregion


        #region NodeSetting

        enemyPattern.patternLv = (EnemyPatternLevel)EditorGUILayout.EnumPopup("Pattern Level", enemyPattern.patternLv);


        EditorGUILayout.LabelField("Node Setting", EditorStyles.boldLabel);

        EditorGUILayout.BeginHorizontal();

        //노트 추가 버튼
        if (GUILayout.Button("노드 추가") == true)
        {
            enemyPattern.AddNodeNum();
        }

        //노드 지우기 버튼
        if (GUILayout.Button("노드 제거") == true)
        {
            enemyPattern.ReduceNodeNum();
        }

        EditorGUILayout.EndHorizontal();


        //NodeNum 라벨
        EditorGUILayout.LabelField("Node Count : " + enemyPattern.nodeNum);


        EditorGUILayout.Space();

        #endregion


        enemyPattern.enemyPatternFold = EditorGUILayout.Foldout(enemyPattern.enemyPatternFold, "Pattern Info");

        //enemyPatternFold = EditorGUILayout.Foldout(enemyPatternFold, "PatternInfo");

        if (enemyPattern.enemyPatternFold)
        {
            ++EditorGUI.indentLevel;
            for (int i = 0; i < enemyPattern.nodeNum; ++i)
            {
                EditorGUILayout.Space();
                enemyPattern.nodeInfoFold[i] = EditorGUILayout.Foldout(enemyPattern.nodeInfoFold[i], " Node Info " + (i + 1));


                if (enemyPattern.nodeInfoFold[i])
                {
                    ++EditorGUI.indentLevel;

                    EditorGUILayout.BeginHorizontal();

                    if (GUILayout.Button("적 하나 추가") == true)
                    {
                        enemyPattern.nodeData[i].AddEnemyNum();
                    }
                    if (GUILayout.Button("적 하나 제거") == true)
                    {
                        enemyPattern.nodeData[i].ReduceEnemyNum();
                    }

                    EditorGUILayout.EndHorizontal();


                    EditorGUILayout.BeginHorizontal();


                    float _nodeStartDelayValue = EditorGUILayout.FloatField("노드 시작 딜레이 : ", enemyPattern.nodeData[i].nodeStartDelay);
                    if (_nodeStartDelayValue != enemyPattern.nodeData[i].nodeStartDelay)
                    {
                        if (_nodeStartDelayValue < 0)
                        {
                            _nodeStartDelayValue = 0f;
                        }
                        if (_nodeStartDelayValue > 20f)
                        {
                            _nodeStartDelayValue = 20f;
                        }
                        enemyPattern.nodeData[i].nodeStartDelay = _nodeStartDelayValue;
                    }

                    int _spawnEnemyNum = EditorGUILayout.IntField("나오는 적 수 : ", enemyPattern.nodeData[i].spawnEnemyNum);

                    if (_spawnEnemyNum <= 0)
                    {
                        _spawnEnemyNum = 1;
                    }
                    if (_spawnEnemyNum != enemyPattern.nodeData[i].spawnEnemyNum)
                    {
                        enemyPattern.nodeData[i].ChangeEnemyNum(_spawnEnemyNum);
                    }


                    EditorGUILayout.EndHorizontal();


                    EditorGUILayout.Space();
                    enemyPattern.enemyInfoFold[i] = EditorGUILayout.Foldout(enemyPattern.enemyInfoFold[i], " 적 정보 " + (i + 1));


                    if (enemyPattern.enemyInfoFold[i])
                    {
                        for (int j = 0; j < enemyPattern.nodeData[i].spawnEnemyNum; ++j)
                        {
                            enemyPattern.nodeData[i].SyncVariableLength();

                            EditorGUILayout.Space();

                            ++EditorGUI.indentLevel;
                            EditorStyles.label.fontStyle = FontStyle.Bold;
                            EditorGUILayout.LabelField("※Enemy " + i + " - " + (j + 1));
                            EditorStyles.label.fontStyle = FontStyle.Normal;
                            ++EditorGUI.indentLevel;

                            enemyPattern.nodeData[i].spawnEnemyValue[j] = (EnemyValue)EditorGUILayout.EnumPopup("적 종류", enemyPattern.nodeData[i].spawnEnemyValue[j]);

                            EditorGUILayout.BeginHorizontal();
                            EditorGUILayout.LabelField("스폰 방향: ");
                            //Debug.Log(enemyPattern.nodeData[i].spawnDirLeft.Length);
                            //Debug.Log(j);
                            bool _isLeft = GUILayout.Toggle(enemyPattern.nodeData[i].spawnDirLeft[j], " 왼쪽");
                            if (_isLeft != enemyPattern.nodeData[i].spawnDirLeft[j])
                            {
                                enemyPattern.nodeData[i].spawnDirLeft[j]       = _isLeft;
                                enemyPattern.nodeData[i].spawnEnemy[j]._isLeft = _isLeft;
                            }
                            EditorGUILayout.EndHorizontal();


                            EditorGUILayout.BeginHorizontal();
                            EditorGUILayout.LabelField("스폰 딜레이: ");
                            float _spawnDelay = EditorGUILayout.Slider(enemyPattern.nodeData[i].spawnDelay[j], enemyPattern.spawnDelayMin, enemyPattern.spawnDelayMax);
                            if (_spawnDelay != enemyPattern.nodeData[i].spawnDelay[j])
                            {
                                enemyPattern.nodeData[i].spawnDelay[j] = _spawnDelay;
                            }
                            EditorGUILayout.EndHorizontal();


                            EditorGUILayout.BeginHorizontal();
                            EditorGUILayout.LabelField("적 속도: ");
                            float _speed = EditorGUILayout.Slider(enemyPattern.nodeData[i].spawnEnemy[j]._speed, enemyPattern.enemySpeedMin, enemyPattern.enemySpeedMax);
                            if (_speed != enemyPattern.nodeData[i].spawnEnemy[j]._speed)
                            {
                                enemyPattern.nodeData[i].spawnEnemy[j]._speed = _speed;
                            }
                            EditorGUILayout.EndHorizontal();


                            EditorGUILayout.BeginHorizontal();
                            EditorGUILayout.LabelField("적 체력: ");
                            int _hp = EditorGUILayout.IntSlider((int)enemyPattern.nodeData[i].spawnEnemy[j]._originHp, 1, 3);
                            if (_hp != enemyPattern.nodeData[i].spawnEnemy[j]._originHp)
                            {
                                enemyPattern.nodeData[i].spawnEnemy[j]._originHp = _hp;
                            }
                            EditorGUILayout.EndHorizontal();


                            EditorGUI.indentLevel -= 2;
                        }
                    }



                    --EditorGUI.indentLevel;
                }
            }
        }

        serializedObject.ApplyModifiedProperties();


        if (EditorGUI.EndChangeCheck())
        {
            Undo.RecordObject(target, "EditEnemyPattern");
            EditorUtility.SetDirty(target);
        }
    }
コード例 #16
0
ファイル: GameManager.cs プロジェクト: ionizn/RomanceTrain
    void Update()
    {
        elapsedTime += Time.deltaTime;
        if (progress != PROGRESS.START && progress != PROGRESS.SHELTER)
        {
            slider.value += Time.deltaTime;
        }
        switch (progress)
        {
        //게임 시작
        case PROGRESS.START:
            if (elapsedTime >= 2)
            {
                Instantiate(StartLogo);
                progress    = PROGRESS.Stage0;
                elapsedTime = 0f;
            }
            break;

        case PROGRESS.SHELTER:
        {
            // 업그레이드 선택 대기 상태
            //선택 하면 다음 페이즈로 이동
            if (StartStage == true)
            {
                ScrollStart();
                audioSource.Play();
                switch (StageCount)
                {
                case 1:
                    progress    = PROGRESS.Stage1;
                    WavePattern = EnemyPattern.Stage1Enemy;
                    StartStage  = false;
                    break;

                case 2:
                    progress    = PROGRESS.Stage2;
                    WavePattern = EnemyPattern.Stage2Enemy;
                    StartStage  = false;
                    break;

                case 3:
                    progress    = PROGRESS.Stage3;
                    WavePattern = EnemyPattern.Stage3Enemy;
                    StartStage  = false;
                    break;

                case 4:
                    progress    = PROGRESS.Stage4;
                    WavePattern = EnemyPattern.Stage4Enemy;
                    StartStage  = false;
                    break;
                }
            }
        }
        break;

        case PROGRESS.Stage0:
            TotalTime += Time.deltaTime;

            if (nextPhaseStarted == false)
            {
                // playerHealth.hp = 10;
                slider.value     = 0;
                slider.maxValue  = 10;
                nextPhaseStarted = true;
            }

            if (elapsedTime >= 10)
            {
                //쉘터 선택
                while (true)
                {
                    int sel = Random.Range(0, 5);
                    if (!used[sel])
                    {
                        Shelter   = Shelters[sel];
                        used[sel] = true;
                        break;
                    }
                }
                Instantiate(Shelter);
                progress         = PROGRESS.SHELTER;
                StageCount       = 1;
                elapsedTime      = 0f;
                nextPhaseStarted = false;
            }
            break;

        case PROGRESS.Stage1:
            TotalTime += Time.deltaTime;

            if (nextPhaseStarted == false)
            {
                // playerHealth.hp = 10;
                slider.value     = 0;
                slider.maxValue  = 100;
                nextPhaseStarted = true;
            }

            switch (WavePattern)
            {
            case EnemyPattern.Stage1Enemy:

                if (elapsedTime >= 5f)
                {
                    SpawnPattern(EnemyPattern.Stage1Enemy);
                    elapsedTime = 0f;
                    Count++;
                }
                break;
            }
            if (Count == 20)
            {
                StopCoroutine("Stage1Enemy");
                //쉘터 선택
                while (true)
                {
                    int sel = Random.Range(0, 5);
                    if (!used[sel])
                    {
                        Shelter   = Shelters[sel];
                        used[sel] = true;
                        break;
                    }
                }
                Instantiate(Shelter);
                progress         = PROGRESS.SHELTER;
                StageCount       = 2;
                Count            = 0;
                elapsedTime      = 0f;
                nextPhaseStarted = false;
            }
            break;

        case PROGRESS.Stage2:
            TotalTime += Time.deltaTime;

            if (nextPhaseStarted == false)
            {
                // playerHealth.hp = 10;
                slider.value     = 0;
                slider.maxValue  = 100;
                nextPhaseStarted = true;
            }

            // 적 생성
            switch (WavePattern)
            {
            case EnemyPattern.Stage2Enemy:

                if (elapsedTime >= 5f)
                {
                    SpawnPattern(EnemyPattern.Stage2Enemy);
                    elapsedTime = 0f;
                    Count++;
                }
                break;
            }
            if (Count == 24)
            {
                StopCoroutine("Stage2Enemy");
                //쉘터 선택
                while (true)
                {
                    int sel = Random.Range(0, 5);
                    if (!used[sel])
                    {
                        Shelter   = Shelters[sel];
                        used[sel] = true;
                        break;
                    }
                }
                Instantiate(Shelter);
                progress    = PROGRESS.SHELTER;
                StageCount  = 3;
                Count       = 0;
                elapsedTime = 0f;

                nextPhaseStarted = false;
            }
            break;

        case PROGRESS.Stage3:
            TotalTime += Time.deltaTime;

            if (nextPhaseStarted == false)
            {
                // playerHealth.hp = 10;
                slider.value     = 0;
                slider.maxValue  = 180;
                nextPhaseStarted = true;
            }

            // 적 생성
            switch (WavePattern)
            {
            case EnemyPattern.Stage3Enemy:

                if (elapsedTime >= 5f)
                {
                    SpawnPattern(EnemyPattern.Stage3Enemy);
                    elapsedTime = 0f;
                    Count++;
                }
                break;
            }
            if (Count == 36)
            {
                StopCoroutine("Stage3Enemy");

                Instantiate(Shelter);
                progress         = PROGRESS.SHELTER;
                StageCount       = 4;
                Count            = 0;
                elapsedTime      = 0f;
                nextPhaseStarted = false;
            }
            break;

        case PROGRESS.Stage4:
            TotalTime += Time.deltaTime;


            if (nextPhaseStarted == false)
            {
                // playerHealth.hp = 10;
                slider.value     = 0;
                slider.maxValue  = 180;
                nextPhaseStarted = true;
            }

            // 적 생성
            switch (WavePattern)
            {
            case EnemyPattern.Stage4Enemy:

                if (elapsedTime >= 4f)
                {
                    SpawnPattern(EnemyPattern.Stage4Enemy);
                    elapsedTime = 0f;
                    Count++;
                }
                break;
            }
            if (Count == 36)
            {
                StopCoroutine("Stage4Enemy");

                Instantiate(ArrivePlanet);

                StageCount  = 4;
                Count       = 0;
                elapsedTime = 0f;
            }
            break;

        case PROGRESS.BOSS:

            break;
        }
    }
コード例 #17
0
    private void InitLevel(int level)
    {
        Pattern.Instance.Reset();
        switch (level)
        {
        case 0:
        {
            Level.Instance.TickAction += () =>
            {
                if (Level.Ticks % 3 == 0 && !Level.GameOver)
                {
                    BeatBGEffect.Create(0);
                }
            };
            Level.Instance.GetComponent <AudioSource>().clip = Level.Instance.L1;
            Level.Instance.MusicStart  = 0f;
            Level.Instance.MusicDelay  = 2.88f;
            Level.Instance.LevelBridge = 2.5f;
            _nextLevel = 3;

            Level.TickTime = 60f / 100 / 3f;

            _switchColors.Add(new Color(1f, 0.63f, 0.31f));
            _switchColors.Add(new Color(1f, 0.48f, 0.21f));
            _switchColors.Add(new Color(1f, 0.43f, 0f));
            _switchColors.Add(new Color(1f, 0.09f, 0f));


            _patterns = new List <List <EnemyPattern> >
            {
                new List <EnemyPattern>
                {
                    new EnemyPattern().AddLeft(Square).AddRight(Square).AddLeft(Square).AddRight(Square).AddLeft(null)
                    .AddRight(Square, 2),
                    new EnemyPattern().AddLeft(Square).AddRight(Square).AddLeft(Square, 2).AddRight(Square).AddLeft(Square).AddRight(Square, 2),
                },
                new List <EnemyPattern>
                {
                    new EnemyPattern().AddLeft(Square).AddRight(Square).AddLeft(null).AddRight(Rhombus, 2),
                    new EnemyPattern().AddLeft(Square).AddRight(Rhombus, 2).SetRepeats(2),
                    new EnemyPattern().AddLeft(Square, 2).AddRight(Square, 2).AddLeft(null, 2).AddRight(Rhombus, 2),
                },
                new List <EnemyPattern>
                {
                    new EnemyPattern().AddLeft(Square).AddRight(Square).AddLeft(null).AddRight(Rhombus, 2),
                    new EnemyPattern().AddLeft(Square, 2).AddRight(Square, 2).SetRepeats(2),
                    new EnemyPattern().AddLeft(Rhombus, 2).AddRight(Rhombus, 2).SetRepeats(2),
                },
                new List <EnemyPattern>
                {
                    new EnemyPattern().AddLeft(Square, 3).AddRight(Square, 3).SetRepeats(2),
                    new EnemyPattern().AddLeft(Square).AddRight(Square).SetRepeats(2),
                    new EnemyPattern().AddRight(Rhombus, 2).AddLeft(Rhombus, 2).SetRepeats(2),
                }
            };
            break;
        }

        case 1:
        {
            Level.Instance.TickAction += () =>
            {
                if (Level.Ticks % 3 == 0 && !Level.GameOver)
                {
                    BeatBGEffect.Create(1);
                }
            };
            Level.Instance.GetComponent <AudioSource>().clip = Level.Instance.L2;
            Level.Instance.MusicStart  = 0f;
            Level.Instance.MusicDelay  = 2.0f;
            Level.Instance.LevelBridge = 2.5f;
            Level.TickTime             = 60f / 130 / 3f;
            _nextLevel = 4;
            Distance   = 5;

            _switchColors.Add(new Color(1f, 0.51f, 0.69f));
            _switchColors.Add(new Color(1f, 0.37f, 0.78f));
            _switchColors.Add(new Color(1f, 0.27f, 0.83f));
            _switchColors.Add(new Color(0.88f, 0f, 1f));


            _patterns = new List <List <EnemyPattern> >
            {
                new List <EnemyPattern>
                {
                    new EnemyPattern().AddLeft(Square, 2).AddRight(Square).AddLeft(Square, 2).AddRight(Square)
                    .AddLeft(Square, 2).AddRight(Square, 2),
                    new EnemyPattern().AddLeft(Rhombus, 2).AddRight(Square, 2).SetRepeats(2),
                    new EnemyPattern().AddLeft(Square, 2).AddRight(Rhombus, 2).AddLeft(Rhombus, 2).AddRight(Square, 2),
                },
                new List <EnemyPattern>
                {
                    new EnemyPattern().AddLeft(Square).AddRight(Square).SetRepeats(2),
                    new EnemyPattern().AddLeft(null).AddRight(Triangle, 2).AddLeft(null).AddRight(Square).SetRepeats(1),
                    new EnemyPattern().AddLeft(Triangle, 2).AddRight(null).SetRepeats(1),
                    new EnemyPattern().AddLeft(Rhombus, 2).AddRight(Square, 2).SetRepeats(1),
                },
                new List <EnemyPattern>
                {
                    new EnemyPattern().AddLeft(Square, 3).AddRight(Square, 3).SetRepeats(1),
                    new EnemyPattern().AddLeft(Rhombus, 2).AddRight(Rhombus, 2).SetRepeats(2),
                    new EnemyPattern().AddLeft(null).AddRight(Triangle, 2).AddLeft(null).AddRight(Rhombus, 2).SetRepeats(2),
                    new EnemyPattern().AddLeft(Triangle, 2).AddRight(null).AddRight(null).AddLeft(Square, 3),
                },
                new List <EnemyPattern>
                {
                    new EnemyPattern().AddLeft(Square, 2).AddRight(Square, 2).SetRepeats(2),
                    new EnemyPattern().AddLeft(Square, 3).AddRight(Square, 3),
                    new EnemyPattern().AddLeft(Rhombus, 2).AddRight(Rhombus, 2).SetRepeats(2),
                    new EnemyPattern().AddLeft(Triangle, 2).AddRight(null).AddRight(null).AddLeft(Square, 3),
                    new EnemyPattern().AddLeft(null).AddRight(Triangle, 2).AddLeft(null).AddRight(Rhombus, 2).SetRepeats(2),
                }
            };
            break;
        }

        case 2:
        {
            Level.Instance.TickAction += () =>
            {
                if (Level.Ticks % 3 == 0 && !Level.GameOver)
                {
                    BeatBGEffect.Create(2);
                }
            };
            Level.Instance.GetComponent <AudioSource>().clip = Level.Instance.L3;
            Level.Instance.MusicStart  = 0f;
            Level.Instance.MusicDelay  = 2f;
            Level.Instance.BeatOffset  = 0.167f;
            Level.Instance.LevelBridge = 2.5f;

            Level.TickTime = 60f / 150 / 3f;
            _nextLevel     = 5;
            Distance       = 5;

            _switchColors.Add(new Color(1f, 0.9f, 0.54f));
            _switchColors.Add(new Color(1f, 0.98f, 0.4f));
            _switchColors.Add(new Color(0.86f, 0.81f, 0.24f));
            _switchColors.Add(new Color(1f, 0.83f, 0f));


            _patterns = new List <List <EnemyPattern> >
            {
                new List <EnemyPattern>
                {
//                        new EnemyPattern().AddLeft(Circle).AddLeft(Circle).AddRight(null).AddRight(null).AddRight(null).AddLeft(null),
                    new EnemyPattern().AddLeft(Square, 2).AddRight(Square).AddLeft(Square, 2).AddRight(Square)
                    .AddLeft(Square, 2).AddRight(Square, 2),
                    new EnemyPattern().AddLeft(Rhombus, 2).AddRight(Square).SetRepeats(2),
                    new EnemyPattern().AddLeft(Square, 2).AddRight(Rhombus, 2).AddLeft(Square).AddRight(Square),
                    new EnemyPattern().AddLeft(Circle).AddRight(Circle),
                },
                new List <EnemyPattern>
                {
                    new EnemyPattern().AddLeft(Square).AddRight(Square, 3).SetRepeats(2),
                    new EnemyPattern().AddLeft(Rhombus, 2).AddRight(Circle).AddLeft(Circle).AddRight(Square, 2).SetRepeats(2),
                },
                new List <EnemyPattern>
                {
                    new EnemyPattern().AddLeft(Square, 3).AddRight(Square, 3).SetRepeats(1),
                    new EnemyPattern().AddLeft(Rhombus, 2).AddRight(Rhombus, 2).SetRepeats(2),
                    new EnemyPattern().AddLeft(Circle).AddRight(null).SetRepeats(2),
                },
                new List <EnemyPattern>
                {
                    new EnemyPattern().AddLeft(Circle).AddRight(Circle).SetRepeats(1),
                    new EnemyPattern().AddLeft(Square, 3).AddRight(Square, 3),
                    new EnemyPattern().AddLeft(Rhombus, 2).AddRight(Rhombus, 2).SetRepeats(1),
                    new EnemyPattern().AddLeft(Circle).AddRight(null).AddRight(null).AddLeft(Square),
                    new EnemyPattern().AddLeft(null).AddRight(Circle, 2).AddLeft(null).AddRight(Rhombus, 2).SetRepeats(2),
                }
            };
            break;
        }

        case 3:
        {
            Level.Instance.TickAction += () =>
            {
                if (Level.Ticks % 3 == 0 && !Level.GameOver)
                {
                    BeatBGEffect.Create(0);
                }
            };
            Level.Instance.GetComponent <AudioSource>().clip = Level.Instance.L1;
            Level.Instance.MusicStart = 63.6f;
            Level.Instance.MusicDelay = 1.9f;
            _nextLevel = 4;

            Level.TickTime = 60f / 100 / 3f;

            _switchColors.Add(new Color(0.56f, 0.59f, 1f));
            _switchColors.Add(new Color(0.36f, 0.45f, 1f));
            _switchColors.Add(new Color(0.22f, 0.26f, 1f));
            _switchColors.Add(new Color(0f, 0f, 1f));


            _patterns = new List <List <EnemyPattern> >
            {
                new List <EnemyPattern>
                {
                    new EnemyPattern().AddLeft(null).AddRight(Circle).AddLeft(null).AddRight(Circle),
                    new EnemyPattern().AddLeft(Square, 2).AddRight(Square, 2).SetRepeats(2),
                    new EnemyPattern().AddLeft(Square, 3).AddRight(Square, 3).SetRepeats(2),
                    new EnemyPattern().AddRight(Rhombus, 2).AddLeft(Rhombus, 2).SetRepeats(2),
                    new EnemyPattern().AddLeft(Square, 3).AddRight(Square, 3).SetRepeats(2),
                },
                new List <EnemyPattern>
                {
                    new EnemyPattern().AddRight(Rhombus, 3).AddLeft(Rhombus, 2).SetRepeats(2),
                    new EnemyPattern().AddLeft(Square, 3).AddRight(Square, 3).SetRepeats(2),
                    new EnemyPattern().AddRight(Rhombus, 2).AddLeft(Rhombus, 2).SetRepeats(2),
                    new EnemyPattern().AddRight(Circle).AddLeft(Circle),
                    new EnemyPattern().AddLeft(Square, 2).AddRight(Square, 2).SetRepeats(2),
                },
                new List <EnemyPattern>
                {
                    new EnemyPattern().AddRight(Square, 3).AddLeft(Square, 2).SetRepeats(2),
                    new EnemyPattern().AddLeft(Square, 2).AddRight(Square, 3).SetRepeats(2),
                    new EnemyPattern().AddRight(Circle).AddLeft(Circle),
                    new EnemyPattern().AddRight(Rhombus, 3).AddLeft(Rhombus, 3).SetRepeats(2),
                },
                new List <EnemyPattern>
                {
                    new EnemyPattern().AddRight(Square, 3).AddLeft(Square, 3).SetRepeats(2),
                    new EnemyPattern().AddLeft(Square, 3).AddRight(Square, 3).SetRepeats(2),
                    new EnemyPattern().AddRight(Circle, 2).AddLeft(Square, 2),
                    new EnemyPattern().AddRight(Rhombus, 3).AddLeft(Rhombus, 3).SetRepeats(2),
                    new EnemyPattern().AddLeft(Square, 3).AddRight(Square, 3).SetRepeats(2),
                },
            };
            var p = Pattern.Instance;
            p.SetPatterns(1);
            p.Reset();
            p.NextLevel(3);
            break;
        }

        case 4:
        {
            Level.Instance.TickAction += () =>
            {
                if (Level.Ticks % 3 == 0 && !Level.GameOver)
                {
                    BeatBGEffect.Create(1);
                }
            };
            Level.Instance.GetComponent <AudioSource>().clip = Level.Instance.L2;
            Level.Instance.MusicStart = 62.8f;
            Level.Instance.MusicDelay = 2f;
            Level.TickTime            = 60f / 130 / 3f;
            _nextLevel = 5;
            Distance   = 5;

            _switchColors.Add(new Color(0.46f, 1f, 0.69f));
            _switchColors.Add(new Color(0.29f, 1f, 0.65f));
            _switchColors.Add(new Color(0.24f, 1f, 0.40f));
            _switchColors.Add(new Color(0f, 1f, 0.16f));


            _patterns = new List <List <EnemyPattern> >
            {
                new List <EnemyPattern>
                {
                    new EnemyPattern().AddLeft(DownTriangle).AddRight(DownTriangle).SetRepeats(2),
                    new EnemyPattern().AddLeft(Rhombus, 3).AddRight(Square, 2).SetRepeats(2),
                    new EnemyPattern().AddLeft(Square, 2).AddRight(Rhombus, 2).AddLeft(Rhombus, 2).AddRight(Square, 2),
                },
                new List <EnemyPattern>
                {
                    new EnemyPattern().AddLeft(DownTriangle).AddRight(DownTriangle),
                    new EnemyPattern().AddLeft(Square, 2).AddRight(Square, 3).SetRepeats(1),
                    new EnemyPattern().AddLeft(Triangle, 2).AddRight(DownTriangle).SetRepeats(3),
                    new EnemyPattern().AddLeft(DownTriangle).AddRight(Rhombus, 3).SetRepeats(2),
                },
                new List <EnemyPattern>
                {
                    new EnemyPattern().AddLeft(Square, 3).AddRight(Square, 3).SetRepeats(2),
                    new EnemyPattern().AddLeft(Rhombus, 2).AddRight(Rhombus, 2).SetRepeats(2),
                    new EnemyPattern().AddLeft(Rhombus, 3).AddRight(DownTriangle).SetRepeats(1),
                    new EnemyPattern().AddLeft(Rhombus, 2).AddRight(Rhombus, 3).AddRight(null).AddLeft(Square, 3),
                },
                new List <EnemyPattern>
                {
                    new EnemyPattern().AddLeft(Square, 3).AddRight(Square, 3),
                    new EnemyPattern().AddLeft(Rhombus, 3).AddRight(Rhombus, 3).SetRepeats(1),
                    new EnemyPattern().AddLeft(DownTriangle).AddRight(Square, 3),
                    new EnemyPattern().AddLeft(Triangle, 2).AddRight(DownTriangle).AddRight(null).AddLeft(Square, 2),
                    new EnemyPattern().AddLeft(DownTriangle).AddRight(Rhombus, 2).SetRepeats(2),
                    new EnemyPattern().AddLeft(Rhombus, 2).AddRight(Square, 2).SetRepeats(2),
                }
            };
            var p = Pattern.Instance;
            p.SetPatterns(2);
            p.Reset();
            p.NextLevel(3);
            break;
        }

        case 5:
        {
            Level.Instance.TickAction += () =>
            {
                if (Level.Ticks % 3 == 0 && !Level.GameOver)
                {
                    BeatBGEffect.Create(2);
                }
            };
            Level.Instance.GetComponent <AudioSource>().clip = Level.Instance.L3;
            Level.Instance.MusicStart  = 62.2f;
            Level.Instance.MusicDelay  = 2f;
            Level.Instance.LevelBridge = 9f;
            Level.TickTime             = 60f / 150 / 3f;
            _nextLevel = 6;
            Distance   = 5;

            _switchColors.Add(new Color(0.81f, 0.78f, 1f));
            _switchColors.Add(new Color(0.77f, 0.64f, 1f));
            _switchColors.Add(new Color(0.73f, 0.47f, 1f));
            _switchColors.Add(new Color(0.55f, 0.25f, 0.79f));


            _patterns = new List <List <EnemyPattern> >
            {
                new List <EnemyPattern>
                {
                    new EnemyPattern().AddLeft(Square, 2).AddRight(Square).AddLeft(Square, 2).AddRight(Square),
                    new EnemyPattern().AddLeft(Rhombus, 3).AddRight(Square, 2).SetRepeats(1),
                    new EnemyPattern().AddLeft(Square, 2).AddRight(Rhombus, 2).AddLeft(Rhombus, 2).AddRight(Square, 2),
                },
                new List <EnemyPattern>
                {
                    new EnemyPattern().AddLeft(DownTriangle).AddRight(DownTriangle),
                    new EnemyPattern().AddLeft(Square, 2).AddRight(Square, 2).SetRepeats(2),
                    new EnemyPattern().AddLeft(Triangle, 2).AddRight(null).SetRepeats(3),
                    new EnemyPattern().AddLeft(DownTriangle).AddRight(Square, 3).SetRepeats(2),
                },
                new List <EnemyPattern>
                {
                    new EnemyPattern().AddLeft(Square, 3).AddRight(Square, 2).SetRepeats(2),
                    new EnemyPattern().AddLeft(Rhombus, 3).AddRight(Rhombus, 2).SetRepeats(1),
                    new EnemyPattern().AddLeft(DownTriangle).AddRight(Rhombus, 2).SetRepeats(2),
                    new EnemyPattern().AddLeft(null).AddRight(Triangle, 2).AddLeft(null).AddRight(Square).SetRepeats(1),
                },
                new List <EnemyPattern>
                {
                    new EnemyPattern().AddLeft(Square, 3).AddRight(Square, 3),
                    new EnemyPattern().AddLeft(Rhombus, 2).AddRight(Rhombus, 2).SetRepeats(2),
                    new EnemyPattern().AddLeft(DownTriangle).AddRight(Square, 3),
                    new EnemyPattern().AddLeft(Rhombus, 3).AddRight(null).AddLeft(Square, 3).AddRight(Square),
                    new EnemyPattern().AddLeft(Square, 2).AddRight(Rhombus, 3).SetRepeats(2),
                }
            };
            var p = Pattern.Instance;
            p.SetPatterns(3);
            p.Reset();
            p.NextLevel(3);
            break;
        }

        case 6:
        {
            Level.TickTime = 60f / 175 / 3f;
            _nextLevel     = 6;
            Distance       = 3;
            if (!Level.NextLevelStart)
            {
                Level.Instance.AudioSource.clip = Level.Instance.L4;
                Level.Instance.MusicStart       = 9.5f;
                Level.Instance.MusicDelay       = 2f;
            }

            UnitedTint.Tint             = Color.white;
            Camera.main.backgroundColor = Color.black;

            _patterns = new List <List <EnemyPattern> >
            {
                new List <EnemyPattern>
                {
                    new EnemyPattern().AddLeft(Square, 2).AddRight(Rhombus, 2),
                    new EnemyPattern().AddLeft(DownTriangle, 1).AddRight(Square, 3),
                    new EnemyPattern().AddLeft(Square, 2).AddRight(Square, 2),
                    new EnemyPattern().AddLeft(Rhombus, 2).AddRight(Rhombus, 2),
                },
            };
            var p = Pattern.Instance;
            p.SetPatterns(7);
            p.Reset();
            Camera.main.orthographicSize        /= 1.5f;
            CameraScript.Instance.SwitchFollow1  = null;
            CameraScript.Instance.SwitchFollow2  = null;
            CameraScript.Instance.SwitchProgress = 0f;
            break;
        }
        }
        if (_switchColors.Count > 0)
        {
            UnitedTint.Tint = _switchColors[0];
            CameraScript.ChangeColorTinted(UnitedTint.Tint);
            Debug.Log("Get color");
            _switchColors.RemoveAt(0);
        }

        _curPattern = _patterns[_cl][_ci];
        var    distTime = Distance * Level.TickTime * 3;
        Action a        = () =>
        {
            Utils.InvokeDelayed(() =>
            {
                if (Level.GameOver)
                {
                    return;
                }
                if (Level.CurrentLevel == 6)
                {
                    return;
                }

                if (_cl >= _patterns.Count - 1)
                {
                    _spawning = false;
                }
                Action dieEvent = () => Utils.InvokeDelayed(() =>
                {
                    if (Level.GameOver)
                    {
                        return;
                    }
                    if (CameraScript.Instance.SwitchFollow1 != null || CameraScript.Instance.SwitchFollow2 != null)
                    {
                        return;
                    }
                    var cs = CameraScript.Instance;
                    Utils.Animate(cs.SwitchProgress, 1f, 0.1f, (v) => cs.SwitchProgress = v, null, true);
                    var nextLevel = _cl >= _patterns.Count;
                    if (nextLevel)
                    {
                        ProgressLine.Instance.Updating = false; // todo finish line and then stop
                        Utils.InvokeDelayed(() =>
                        {
                            var p = Pattern.Instance;
                            p.Reset();
                            p.NextLevel(2);
                        }, Level.Instance.LevelBridge / 4);
                        Utils.InvokeDelayed(() =>
                        {
                            var p = Pattern.Instance;
                            p.Reset();
                            p.NextLevel(1);
                        }, Level.Instance.LevelBridge / 2);
                        Utils.InvokeDelayed(() =>
                        {
                            var p = Pattern.Instance;
                            p.Reset();
                            if (_nextLevel == 6)
                            {
                                Utils.Animate(1f, 0f, Level.Instance.LevelBridge / 4, (v) => Level.Instance.AudioSource.volume += v);
                            }
                        }, Level.Instance.LevelBridge / 4 * 3);
                        Utils.InvokeDelayed(() =>
                        {
                            Level.CurrentLevel   = _nextLevel;
                            Level.NextLevelStart = true;
                            Level.Instance.OnEnable();
                            ProgressLine.Instance.Reset();

                            if (_nextLevel == 6)
                            {
                                Level.Instance.AudioSource.clip   = Level.Instance.L4;
                                Level.Instance.MusicStart         = 9.5f;
                                Level.Instance.MusicDelay         = 2f;
                                Level.Instance.AudioSource.volume = 0f;
                                Utils.Animate(0f, 1f, 0.9f, (v) => Level.Instance.AudioSource.volume += v);
                                Level.Instance.AudioSource.time = Level.Instance.MusicStart;
                                Level.Instance.AudioSource.Play();
                            }
                        }, Level.Instance.LevelBridge);
                    }
                    Utils.InvokeDelayed(() =>
                    {
                        Utils.Animate(1f, 0f, 0.2f, (v) => cs.SwitchProgress = v, null, true);
                        if (Level.CurrentLevel == 0)
                        {
                            if (_cl == 1)
                            {
                                GridMarks.Instance.RemoveTint(-1);
                                GridMarks.Instance.RemoveTint(1);
                                GridMarks.Instance.SetBorders(-1, 1);
                                GridMarks.Instance.DisplayBorders(true, false);
                            }
                            else if (_cl == 2)
                            {
                                GridMarks.Instance.DisplayBorders(false);
                                GridMarks.Instance.LeftSolid  = false;
                                GridMarks.Instance.RightSolid = false;
                                Action ad = () => Player.Instance.TakeDmg(Player.Instance, 999);
                                GridMarks.Instance.HandlerLeft  = ad;
                                GridMarks.Instance.HandlerRight = ad;
                            }
                        }
//                        ProgressLine.Create(-1f + (-0.2f * _cl));
                        if (nextLevel)
                        {
                            return;
                        }
                        ProgressLine.Instance.StartNext();
                        if (_switchColors.Count > 0)
                        {
                            UnitedTint.Tint = _switchColors[0];
                            CameraScript.ChangeColorTinted(UnitedTint.Tint);
                            _switchColors.RemoveAt(0);
                            Debug.Log("Get color2");
                        }
                        else
                        {
                            Debug.LogError("Switch colors empty! " + _cl + " " + _ci);
                        }
                        Pattern.Instance.NextLevel();
                    }, 0.2f);
                }, Level.TickTime * 2);
                if (_lastSpawned1 != null || _lastSpawned2 != null)
                {
                    CameraScript.Instance.SwitchFollow1           = _lastSpawned1;
                    CameraScript.Instance.SwitchFollow2           = _lastSpawned2;
                    _lastSpawned1.GetComponent <Unit>().DieEvent += dieEvent;
                    _lastSpawned2.GetComponent <Unit>().DieEvent += dieEvent;
                }

                _cl++;
                _ci = 0;
                if (_cl >= _patterns.Count)
                {
                    return;
                }
                _curPattern = _patterns[_cl][_ci];
                _spawning   = false;
                Utils.InvokeDelayed(() => _spawning = true, Level.TickTime * 3 * 3);
            }, SublevelTime - distTime);
        };

        StartAction = () =>
        {
            ProgressLine.Instance.StartNext();
            Utils.InvokeDelayed(() =>
            {
                a();
            }, SublevelTime, null, true);
            a();
        };
    }
コード例 #18
0
 // エネミーの行動パターン変更
 public void ChangeEnemyPattern(EnemyPattern pattern)
 {
     enemyPattern = pattern;
 }