Exemplo n.º 1
0
    private void OnTriggerEnter(Collider other)
    {
        if (other.CompareTag("AlienSaveSpot"))
        {
            SaveControllingAlien();

            foreach (PlayerCharacter p in GameSceneManager.Instance.GameState.Invaders)
            {
                p.SaveControllingAlien();
            }
        }

        if (other.CompareTag("AlienControlTrigger"))                                     // Collision with alien
        {
            AlienController a = other.transform.parent.GetComponent <AlienController>(); // Get alien component

            if (a != null)                                                               // Check if alien component is ok
            {
                if (!IsControllingAlien())                                               // Player is not controlling alien
                {
                    SetControllingAlien(a);
                }
                else // Player is controlling alien, find an invader available
                {
                    List <InvaderController> availableInvaders = GameSceneManager.Instance.GameState.Invaders.Where(i => !i.IsDead && !i.IsControllingAlien()).ToList();
                    if (availableInvaders.Count > 0)
                    {
                        InvaderController first = availableInvaders.First();
                        first.SetControllingAlien(a); // Give alien controll to the first invader found
                    }
                }
            }
        }

        if (GM.GameState.IsEnergyStateActive)
        {
            if (other.CompareTag("Soldier"))
            {
                SoldierController soldier = other.GetComponent <SoldierController>();
                if (soldier != null && !soldier.IsDead)
                {
                    HitSoldierParticles.Play();
                    soldier.DoDeath();
                }
            }
        }
    }