У объекта, который создает рейкаст, есть коллайдер?
Если да - возможно рейкаст просто попадает "сам в себя". Тогда нужно использовать слои, чтобы рейкаст срабатывал только при попадании в объекты определенного слоя и игнорировал остальные коллайдеры.
И еще на будущее - вместо сравнения тегов с помощью ==, используйте CompareTag - hit.collider.CompareTag("Player")
Sir_Akakii, написал такой код if (hit.collider.gameObject.layer == LayerMask.NameToLayer("Player"))
, на объекте, который принимает рейкаст стоит данный тег. И всё равно не работает.
Так ты просто задаешь слой объекту. Сам слой задай в инспекторе игроку, а в своей функции добавь 4-й аргумент, отвечающий за слой:
Physics2D.Raycast(transform.position, Vector2.right, spacing, 1 << LayerMask.NameToLayer("Player"));
Так рейкаст будет реагировать только на коллайдер игрока и игнорировать все остальные.