示例#1
0
 // Update is called once per frame
 void Update()
 {
     duration      -= Time.deltaTime;
     timeSinceTick += Time.deltaTime;
     if (obj != null && timeSinceTick > .5f)
     {
         obj.TakeDamage(damageValue, ElementalResistances.FIRE);
         Collider2D[] nearby = Physics2D.OverlapCircleAll(transform.position, 1.75f);
         Ability.DebugDrawRadius(transform.position, 1.75f, Color.red, .35f);
         foreach (Collider2D coll in nearby)
         {
             if (coll.transform.root.GetComponent <EnemyObject>() != null && coll.transform.root.GetComponent <WildfireDot>() == null)
             {
                 WildfireDot spreadDot = coll.transform.root.gameObject.AddComponent <WildfireDot>();
                 spreadDot.duration    = duration;
                 spreadDot.damageValue = damageValue * 1.5f;
                 spreadDot.burnCount   = burnCount + 1;
             }
         }
         timeSinceTick = 0;
     }
     if (duration < 0)
     {
         Destroy(this);
     }
 }
示例#2
0
 private void TriggerExplosion()
 {
     Collider2D[] collisions = Physics2D.OverlapCircleAll(transform.position, explosionRadius, LayerMask.GetMask("Enemies"));
     foreach (Collider2D coll in collisions)
     {
         if (coll.transform.root.GetComponent <EnemyObject>() != null)
         {
             WildfireDot refDot = coll.gameObject.AddComponent <WildfireDot>();
             refDot.duration    = 3f;
             refDot.damageValue = damageVal;
             refDot.burnCount   = 0;
         }
     }
     if (collisions.Length > 0)
     {
         Ability.DebugDrawRadius(transform.position, explosionRadius, Color.red, 1f);
         Destroy(gameObject);
     }
 }