Esempio n. 1
0
 public void OnTriggerEnter2D(Collider2D col)
 {
     if (!col.isTrigger)
     {
         if (col.CompareTag(targetTag))
         {
             I_Killable killable = col.GetComponentInParent <I_Killable>();
             if (!killable.IsInvicible())
             {
                 float targetLife = killable.GetLife();
                 killable.TakeDamage(damage);
                 damage -= targetLife;
                 float coef = damage / maxDamage;
                 transform.localScale = startScale * coef;
                 if (damage <= 0)
                 {
                     DestroyBullet();
                 }
             }
         }
         else if (col.CompareTag("Environment"))
         {
             DestroyBullet();
         }
     }
 }
Esempio n. 2
0
    public void OnTriggerEnter2D(Collider2D col)
    {
        if (!col.isTrigger)
        {
            if (col.CompareTag(targetTag))
            {
                I_Killable killable = col.GetComponentInParent <I_Killable>();
                if (!killable.IsInvicible())
                {
                    killable.TakeDamage(damage);
                }

                DestroyBullet();
            }
            else if (col.CompareTag("Environment"))
            {
                DestroyBullet();
            }
        }
    }
Esempio n. 3
0
 private void CheckTrajectory()
 {
     for (int i = 0; i < trajectory.Count; i++)
     {
         Vector2 origin = trajectory[i];
         Vector2 direction;
         if (i + 1 < trajectory.Count)
         {
             direction = trajectory[i + 1] - trajectory[i];
         }
         else
         {
             direction = new Vector2(transform.position.x, transform.position.y) - trajectory[i];
         }
         RaycastHit2D[]    hits    = Physics2D.CircleCastAll(origin, lenght, direction, direction.magnitude, layer);
         List <I_Killable> targets = new List <I_Killable>();
         foreach (RaycastHit2D hit in hits)
         {
             foreach (string tag in tags)
             {
                 if (hit.collider.CompareTag(tag))
                 {
                     I_Killable target = hit.collider.GetComponent <I_Killable>();
                     if (!targets.Contains(target))
                     {
                         targets.Add(hit.collider.GetComponent <I_Killable>());
                     }
                 }
             }
         }
         foreach (I_Killable target in targets)
         {
             target.TakeDamage(damage);
         }
     }
 }