protected override void OnDeath() { deathCount++; foreach (EnemyProtoEx3 proto in protos) { proto.IsInBattle = false; } if (deathCount <= 4) { for (int i = 0; i < 2; i++) { EmilGhost ghost = Instantiate(ghostPrefab, transform.position, Quaternion.identity); bool newPosition = true; Vector3 position = Vector3.zero; while (newPosition) { newPosition = false; position = new Vector3(Random.Range(-11f, 11f), 0f, Random.Range(-8f, 8f)); foreach (EnemyProtoEx3 proto in protos) { if ((position - proto.transform.position).magnitude <= MapEx3.GRID_SIZE) { newPosition = true; } } } ghost.rebirthPosition = position; ghost.rebirthTime = 3f + 0.5f * i; } } }
void Start() { IsSceneOver = false; GameManager.gameScene = GameScene.Ex3; HUDManager.instance.SetCamera(Camera.main); PauseMenu.instance.SetCamera(GameCamera.UI); Player.IsArmed = true; Player.IsMovable = true; Curtain.instance.ChangeColor(2f, Curtain.black, Curtain.black_clear); emils = new List <EnemyBossEx3>(); if (isFinalEntered) { StartCoroutine(FinalPhase()); } else if (isMainLoppEntered) { for (int i = 0; i < 9; i++) { bool newPosition = true; Vector3 position = Vector3.zero; while (newPosition) { newPosition = false; position = new Vector3(Random.Range(-11f, 11f), 0f, Random.Range(-8f, 8f)); if ((position - Player.instance.transform.position).magnitude <= MapEx3.GRID_SIZE) { newPosition = true; } for (int j = 0; j < i; j++) { if ((position - emils[j].transform.position).magnitude <= MapEx3.GRID_SIZE) { newPosition = true; } } } EnemyBossEx3 emil = EnemyManager.instance.SetEnemy(emilPrefab, position); emils.Add(emil); emil.id = i; emil.healthPoint = (int)BOSS_HP; HUDManager.instance.AddHPBar(BOSS_ID + emil.id, "????", 0f, 0.06f, 0.06f, emil.transform); HUDManager.instance.AutoFadeHPBar(BOSS_ID + emil.id, true); HUDManager.instance.ShowHPBar(BOSS_ID + emil.id); } PlatformDown(); mainLoopCoroutine = StartCoroutine(MainLoop()); StartCoroutine(CheckBossStates()); } else { EmilGhost ghost = Instantiate(ghostPrefab, new Vector3(0f, 0f, 3f), Quaternion.identity); ghost.rebirthPosition = new Vector3(0f, 0f, 3f); ghost.rebirthTime = 3f; StartCoroutine(PrePhase()); } }