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]; } } }
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>(); }
// Use this for initialization void Start() { enemy = gameObject.transform.parent.gameObject; enemymove = enemy.GetComponent <EnemyMove> (); enemyPattern = enemy.GetComponent <EnemyPattern>(); player = GameObject.Find("PlayerMove"); }
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; } } }
void SelectFeverPattern() { selectedPt = feverPattern; nowNodeNum = 0; nowSpawnEnemyNum = 0; nodeDelaying = true; spawnsDelaying = false; }
void Start() { AudioSource[] audioSources = GetComponents <AudioSource>(); sound01 = audioSources[5]; ads = GameObject.Find("PlayerMove"); advantageshift = ads.GetComponent <AdvantageShift>(); enemyPattern = GetComponent <EnemyPattern>(); }
// 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>(); }
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; } } }
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; }
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; }
// 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; }
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; }
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; } }
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]; }
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); } }
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; } }
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(); }; }
// エネミーの行動パターン変更 public void ChangeEnemyPattern(EnemyPattern pattern) { enemyPattern = pattern; }