/// <summary>
 /// Return Closest Drop
 /// </summary>
 /// <returns></returns>
 public GameObject ClosestPlant()
 {
     #region Initialize Friend and Enemy
     float      close        = closestDistance;
     GameObject closestPlant = null;
     #endregion
     foreach (GameObject Plant in AllPlants)
     {
         #region Check if Creature Deleted
         if (Plant == null)
         {
             continue;
         }
         DestructableEnvironment d = Plant.GetComponent <DestructableEnvironment>();
         if (d != null && d.destroyed)
         {
             continue;
         }
         #endregion
         //Debug.Log("Potential Plant: " + Creature.GetInstanceID());
         //Debug.Log(Plant.GetInstanceID() + " is a drop");
         float dist = Vector2.Distance(transform.position, Plant.transform.position);
         if (dist < close)
         {
             close        = dist;
             closestPlant = Plant;
         }
     }
     //Debug.Log("Closest drop is reached = " + (closestPlant == null ? "and it is null" : closestPlant.name + closestPlant.GetInstanceID()));
     return(closestPlant);
 }
    public override void OnTriggerEnter2D(Collider2D collision)
    {
        //Debug.Log("THERE IS NO CHARACTERCOLLISION");
        //monsterChecks.Enemies.Clear();
        GameObject g = collision.gameObject;
        string     t = g.tag;

        if (t == "Predator")
        {
            if (damageSFX != null)
            {
                sfxPlayer.PlayRandPitch(damageSFX);
            }
            CharacterData charData = collision.gameObject.GetComponent <CharacterData>();
            //Debug.Log("THERE IS CHARACTER COLLISION");
            if (charData != null)
            {
                if (myCharData != null)
                {
                    myCharData.damageDealt += (int)meleeDamage;
                }
                if (charData.DoDamage((int)meleeDamage) && myCharData != null)
                {
                    myCharData.entitiesKilled += 1;
                }
            }
        }

        if (g.GetComponent <DestructableEnvironment>() != null)
        {
            DestructableEnvironment de = g.GetComponent <DestructableEnvironment>();
            de.health -= ((int)meleeDamage);
            de.Destroy();
        }
    }
    protected override void OnTriggerEnter2D(Collider2D collision)
    {
        DestructableEnvironment envData = collision.GetComponent <DestructableEnvironment>();
        bool destroyed = true;

        if (envData != null)
        {
            destroyed = envData.destroyed;
        }
        base.OnTriggerEnter2D(collision);
        if (envData != null && !destroyed)
        {
            if (envData.destroyed)
            {
                string value = FlagManager.GetFlag("EnvDestroyedByFire");
                if (value == FlagManager.undefined || value == "0")
                {
                    return;
                }
                int numLeft = int.Parse(value);
                if (numLeft <= 1)
                {
                    FlagManager.SetFlag("EnvDestroyedByFire", "0");
                    if (QuestManager.instance.GetText().Contains("Burn"))
                    {
                        QuestManager.instance.SetText("Talk to {amrita}");
                    }
                }
                else
                {
                    FlagManager.SetFlag("EnvDestroyedByFire", (numLeft - 1).ToString());
                    if (QuestManager.instance.GetText().Contains("Burn"))
                    {
                        QuestManager.instance.SetText("{color,spicy,Burn} {flag,EnvDestroyedByFire} objects");
                    }
                }
            }
        }
    }
Пример #4
0
    protected virtual void OnTriggerEnter2D(Collider2D collision)
    {
        if (collision.GetType() == typeof(BoxCollider2D))
        {
            Physics2D.IgnoreCollision(collision, gameObject.GetComponent <CapsuleCollider2D>());
        }
        GameObject go = collision.gameObject;

        // Debug.Log("Projectile trigger entered");
        if (go.tag == "SkewerableObject")
        {
            return;
        }
        if (go == attacker)
        {
            return;
        }
        if ((go.tag == "Player" || go.tag == "Prey") && !hurtPlayer)
        {
            return;
        }
        if (go.tag == "Predator" && !hurtDrones)
        {
            return;
        }
        if (dropItem != null)
        {
            Instantiate(dropItem, transform.position, Quaternion.identity);
        }

        CharacterData characterData = go.GetComponent <CharacterData>();

        if (characterData != null)
        {
            //myCharData.damageDealt += (int)projectileDamage;
            //Debug.Log("Dealing DMG");
            if (characterData.DoDamage((int)projectileDamage) && myCharData != null)
            {
                myCharData.entitiesKilled += 1;
            }
            if (!penetrateTargets)
            {
                Destroy(this.gameObject);
            }
        }
        else if (go.tag == "ThrowThrough")
        {
            DestructableEnvironment envData = go.GetComponent <DestructableEnvironment>();
            //myCharData.damageDealt += (int)projectileDamage;
            //Debug.Log("Dealing DMG");
            if (envData != null)
            {
                envData.health -= (int)Mathf.Max(projectileDamage, 1);
                envData.Destroy();
                if (!penetrateTargets)
                {
                    Destroy(this.gameObject);
                }
            }
        }
    }