// Удаление всех игровых сущностей с поля private void RemoveAllCreatures() { // Удаляем все астероиды с игрового поля for (int i = 0; i < _activeAsteroidList.Count; ++i) { // Отписываемся от события смерти астероида и уничтожаем его _activeAsteroidList[i].OnKilled -= OnEnemyKilledHandler; DeathEffect de = _activeAsteroidList[i].GetComponent <DeathEffect>(); if (de != null) { de.Enable(false); } Destroy(_activeAsteroidList[i].gameObject); } _activeAsteroidList.Clear(); // Удаляем все летающие тарелки (и оставшихся противников, если так случилось) Enemy[] lastEnemies = FindObjectsOfType <Enemy>(); for (int i = 0; i < lastEnemies.Length; ++i) { // Отписываемся от события смерти сущности и уничтожаем её lastEnemies[i].OnKilled -= OnEnemyKilledHandler; DeathEffect de = lastEnemies[i].GetComponent <DeathEffect>(); if (de != null) { de.Enable(false); } Destroy(lastEnemies[i].gameObject); } // Удаляем персонажа с игрового поля if (_activePlayer != null) { DeathEffect de = _activePlayer.GetComponent <DeathEffect>(); if (de != null) { de.Enable(false); } Destroy(_activePlayer.gameObject); _activePlayer = null; } }
// Update is called once per frame public void Spawn(GameObject dying, Vector3 speed) { GameObject chosen = null; foreach (GameObject effect in Effects) { if (effect.activeSelf == false) { chosen = effect; break; } } if (chosen != null) { DeathEffect d = chosen.GetComponent <DeathEffect>(); chosen.SetActive(true); chosen.transform.position = dying.transform.position; Rigidbody2D rb = dying.GetComponent <Rigidbody2D>(); rb.AddForce(speed * 250); rb.drag = 4; d.Enable(dying); } }