// 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); } }
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); } }