private void TriggerDamage(GameObject receiver)
    {
        //trigger damage at the Enemy GameObject
        DamageComponent.DamageInfo info = new DamageComponent.DamageInfo();
        info.sender = this.gameObject;
        info.damage = this.damage;

        receiver.GetComponent <DamageComponent>().OnDamageReceived(info);

        canDamage = false;
    }
    private void OnTriggerStay2D(Collider2D collision)
    {
        if (isInvincible)
        {
            return;
        }

        var other = collision.gameObject;

        if (other.tag == "EnemyBullet")
        {
            StartCoroutine(Invincibility());
            var knockbackComp = other.GetComponent <KnockBackComponent>();

            DamageComponent.DamageInfo info = new DamageComponent.DamageInfo();
            info.damage = collision.gameObject.GetComponent <Bullet>().damage;
            info.sender = collision.gameObject;

            this.OnDamageReceived(info);

            knockbackComp.Execute(gameObject.transform.parent.gameObject);

            Destroy(collision.gameObject);
        }
        if (other.tag == "Spike")
        {
            StartCoroutine(Invincibility());
            var knockbackComp = other.GetComponent <KnockBackComponent>();

            DamageComponent.DamageInfo info = new DamageComponent.DamageInfo();
            info.damage = collision.gameObject.GetComponent <Spike>().damage;
            info.sender = collision.gameObject;

            this.OnDamageReceived(info);

            //collision.gameObject.GetComponent<KnockBackComponent>().canKnockback = false;

            knockbackComp.Execute(gameObject.transform.parent.gameObject);

            Destroy(collision.gameObject);
        }
        if ((other.name == "HitboxHead" || other.name == "HitboxBody" || other.name == "HitboxTorso") && damageZoneActive == false)
        {
            StartCoroutine(Invincibility());
            var knockbackComp = other.GetComponent <KnockBackComponent>();

            var damageComponent = other.GetComponent <DamageComponent>();
            if (damageComponent != null)
            {
                DamageInfo info = new DamageInfo();
                info.damage = contactDamage;
                info.sender = this.gameObject;

                OnDamageReceived(info);

                this.damageZoneActive = true;

                StartCoroutine(DamageTick());
            }

            knockbackComp.Execute(gameObject.transform.parent.gameObject);
        }
    }