예제 #1
0
    // Удаление всех игровых сущностей с поля
    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;
        }
    }
예제 #2
0
    // 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);
        }
    }