¿Cómo detectar GameObjects múltiples / superpuestos con EventSystem?

Lo que trato de lograr: el cepillo de dientes debería aparecer donde el usuario haga clic dentroBoxCollider A, incluido el espacio interiorBoxCollider B. Pero aparentemente haciendo clic dentroB no mostrará el cepillo de dientes (OnPointerDown no se está activando).

Lo que he intentado: cambiar el orden de las capas.

El cepillo de dientes se muestra después de que el usuario hace clic dentro del colisionador de cajasA, pero si el usuario hace clic dentro del cuadro colisionadorB- el cepillo de dientes no aparecerá, lo que significaOnPointerDown no se activa

Creo que es por la superposición de unoBoxCollider2D dentro de otroBoxCollider2D. En mi casoB dentroA, Supongo que es el culpable, pero no tengo idea de cómo resolverlo o si tal vez hay otro método para implementarOnPointerDown?

estoy usandoPerspective cámara. pero en esta escena todos los elementos están en el mismoz position que es 0. ¿Es posible activar el evento IPointerHander en cada respectivoBoxCollider2D ?

DragableObject.cs

Este script está adjunto al cepillo de dientes. losBoxCollider2D A también pertenece al cepillo de dientes.

public void OnPointerDown(PointerEventData eventData)
{
    Debug.Log("pointer down");

    if (GetComponent<DragableObject>() == null)
        return;

    currentObject = GetComponent<DragableObject>();

    MeshRenderer renderer = GetComponent<MeshRenderer>();

    if (ShowOnTouch)
        ShowObject();

    // Store original state
    originalPosition = transform.position;
    originalOrderLayer = renderer.sortingOrder;
    // Snap to mouse
    Vector3 newPos = cam.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, 30));
    newPos.z = 30;
    transform.position = newPos;

    if (BringToFront)
    {
        if (renderer != null)
        {
            renderer.sortingOrder = 90;
        }
    }

    ObjectActive.Invoke();
}
TargetListener.cs

Este script está adjunto aBoxCollider2D SI.

public void OnPointerDown(PointerEventData eventData)
{
    for (int i = 0; i < Affectors.Count; i++) 
    {
        if (Affectors [i] == DragableObject.currentObject)
        {
            DragableObject.currentObject.OnEnterTarget(transform);

            ITriggerEffect[] iTrigger = GetComponents<ITriggerEffect>();

            for (int j = 0; j < iTrigger.Length; j++) 
            {
                Debug.Log("iTrigger enter");
                Debug.Log(iTrigger [j]);
                iTrigger [j].Execute(eventData, PointerState.Down);
            }
        }
        else
            continue;
    }
}

Si hago clic enA aparecerá el cepillo de dientes, excepto cuando haga clic dentroB. Aquí el registro de depuración.

Este es elBoxCollider2D A está unido a, que es el*Toothbrush a sí mismo junto con eldragable.cs guión.

ACTUALIZACIÓN: Gracias a otros que respondieron, el problema se volvió más claro para mí. A continuación esBoxCollider2D A yBoxCollider2D B. Ambos tienen guiones que tienen la mayoría deOnPointerHander. ¿Cómo me aseguro de que todoOnPointerHandler se activa en respectivoBoxCollider2D ?.

Problemas que estoy teniendo:

OnPointerExit enA se activa cuando entra mi punteroB.si hace clic adentroB ,OnPointerDown solo se activa enB pero noA

Respuestas a la pregunta(2)

Su respuesta a la pregunta