Thanks for sending your Unity reproduction project up front. Unfortunately Unity seems to not properly respect the Sorting Layer
[1] during raycasts between MeshRenderer
and SpriteRenderer
objects. It also seems to matter whether the BoxCollider2D
is attached to the Renderer
GameObject or to its parent, the Sorting Layer
of the renderer only seems to be respected properly when the BoxCollider2D
is at the renderer as well (otherwise it may count as the default sorting layer perhaps?). So we're afraid to say that we can't do anything about it, as it's in Unity's hand to handle the raycast. If you really need to use Sorting Layer
, we would recommend to either create dummy raycast receivers (e.g. empty SpriteRenderers
with a BoxCollider2D
) that forward any events to the intended receiver, or to change raycast handling altogether.
[1] In code it can be set via renderer.sortingLayerID = SortingLayer.NameToID(layerName);
.