Unity 2022.3.17f 버전을 사용하여 Metaverse 게임을 개발하던 도중 Player가 Raycast를 쏘고 그 RayCast가 상호작용 가능한 오브젝트에 닿았을 때 상호작용 버튼이 뭔지 알려주는 기능을 구현하려는 상황.
Raycast2D를 PlayerController에서 생성해서 Player 오브젝트에서 쏘도록 만들고, 상호작용 가능한 오브젝트의 Tag를 통해 충돌 판정을 하려고 했으나, 아무반응 없는 현상이 발생했다.

그래서 문제를 해결하기 위해 아래와 같은 시도를 했습니다.
이 과정에서 무엇이 문제인지 한 가지 가능성을 생각했다.
Raycast는 여러 오브젝트와 충돌하고 있어도 처음 충돌한 오브젝트 이외의 다른 오브젝트와 충돌판정을 내지 않는다.
위 가설이 사실임을 증명하기 위해 태그가 Player면 충돌을 무시하는 코드를 짜려고 했으나, 도중에 LayerMask 에 대해 알게 되었고, 태그를 활용한 코드는 잘못된 것을 깨달았다. 그래서 LayerMask를 활용한 방안을 모색했다.
그래서 결국 LayerMask를 활용해서 다음과 같이 코드를 짰다.

충돌한 물체가 상호작용 가능한 오브젝트인지 판단하는 것이 아니라 애초에 Raycast가 상호작용 가능한 오브젝트만을 충돌하도록 만드는 방법이다.
LayerMask를 활용하여 완벽하게 원하는 기능을 구현할 수 있었다.
다음에도 Raycast를 사용할 일이 생기면 태그가 아닌 LayerMask를 활용하는 방법을 사용하자.

