Raycast использует маску, способ, которым работает ваш код RaycastHit2D hit = Physics2D.Raycast(transform.position, Vector2.right, Mathf.Infinity, LayerMask.NameToLayer("Wall"));
требует незначительного изменения
try RaycastHit2D hit = Physics2D.Raycast(transform.position, Vector2.right, Mathf.Infinity, ~1<<LayerMask.NameToLayer("Wall"));
1 << сдвигает биты,~ делает комплимент </p>
Это отражено в документах raycast о единстве (хотя оно указано в разделе 3d, оно по-прежнему применяется https://docs.unity3d.com/ScriptReference/Physics.Raycast.html)