c# – (Unity)Physics2d.OverlapBoxAll no devuelve nada al tocar el layer hurtbox

Estoy intentando adaptar el siguiente tutorial a mi juego: https://strangewire.blogspot.com/2018/05/hitboxes-and-hurtboxes-in-unity.html
El problema principal es que la hitbox que creo con el overlapp no detecta los colliders triggers puestos en las hurtbox aunque este activado en el layer collision matrix.
En la esfera tampoco devuelve nada pero solo usare la caja
tanto las Hurtboxes como las Hitboxes son hijos de un character que esta en el layer Characters y de una PushBox en la layer Pushbox que es la que tiene el rigidbody

Mi collision layer matrix 2d

La escena:
La escena y la jerarquia

El codigo (en HitboxUpdate se hace el overlap):

public class Hitbox : MonoBehaviour
{
 public string owner = "-1";
 public Vector3 boxSize;
 public Vector3 position;
 public Quaternion rotation;
 public LayerMask mask;
 public bool useSphere = false;
 public float radius = 0.5f;
 public Color inactiveColor;

 public Color collisionOpenColor;

public Color collidingColor;
private ColliderState _state;
// ignoreList = ds_List_create()
public float hitStun = 60;
private IHitboxResponder _responder = null;

// Update is called once per frame
void Update()
{
    HitboxUpdate();


}
public void StartCheckingCollision()
{
    _state = ColliderState.Open;

}

public void StopCheckingCollision()
{
    _state = ColliderState.Closed;

}


void OnDrawGizmos()
{
    // Draw a yellow sphere at the transform's position

    Debug.Log("draw hitbox gizmos");
    CheckGizmoColor();

    Gizmos.matrix = Matrix4x4.TRS(transform.position, transform.rotation, transform.localScale);
    if (useSphere)
    {
        Gizmos.DrawSphere(Vector3.zero, radius);         }
    else
    {

        Gizmos.DrawCube(position, new Vector3(boxSize.x * 2, boxSize.y * 2, boxSize.z * 2)); 
    }
}
private void CheckGizmoColor()
{
    switch (_state)
    {

        case ColliderState.Closed:

            Gizmos.color = inactiveColor;
            Debug.Log("Closed");
            break;

        case ColliderState.Open:

            Gizmos.color = collisionOpenColor;
            Debug.Log("Open");
            break;

        case ColliderState.Colliding:

            Gizmos.color = collidingColor;
            Debug.Log("colliding");
            break;

    }

}
public void HitboxUpdate()
{

    StartCheckingCollision();

    if (_state == ColliderState.Closed)
    {
        Debug.Log("Collider cloded");
        return;
    }
    Debug.Log("Collider  open hit");
    Collider2D() colliders = Physics2D.OverlapBoxAll(position, boxSize,mask);
    if (colliders.Length > 0)
    {
        _state = ColliderState.Colliding;
        Debug.Log("We hit something hitbox");
    }
    if (colliders.Length > 0)
    {
        for (int i = 0; i < colliders.Length; i++)
        {
            if (colliders(i).gameObject.GetComponent<Hurtbox>() != null)
            {
                if (colliders(i).gameObject.GetComponent<Hurtbox>().owner == owner)
                {
                    Debug.Log("collider skiped");

                    colliders = colliders.Skip(i).ToArray();
                }
            }
            Debug.Log("Hit " + colliders(i).gameObject.name);


        }
    }
    for (int i = 0; i < colliders.Length; i++)
    {
        Collider2D aCollider = colliders(i);
        Debug.Log("Works");
        _responder?.CollisionedWith(aCollider);

    }


    _state = colliders.Length > 0 ? ColliderState.Colliding : ColliderState.Open;


}
public void UseResponder(IHitboxResponder responder)
{
    _responder = responder;

}

}
public enum ColliderState
{

Closed,

Open,

Colliding

}