a04424ad2c06782ab47e5a67ee91766dc28ff1edd2acc7cdbf11d0c65ed4d42166254de5886d3cbcdb49b76920cd90


카드를 위와 같이 나열했을 때 Sprite Renderer의 Layer Order가 높은 카드들이 '더 위' 에 있는 것처럼 느껴질텐데요.




a04424ad2c06782ab47e5a67ee91766dc28ff1edd2acc7cdbf11d0c65dd0de21b4cd7420d7655482784f212807df19


허나 실제로는 월드 스페이스의 position.z 값이 동일한 경우가 있을 수 있죠.





a04424ad2c06782ab47e5a67ee91766dc28ff1edd2acc7cdbf11d0c65dd3de21cb77dbe0f555e37fb13b2ec909dc


IPointerEnterHandler를 사용하고 계시다면 카메라에 2D Raycaster가 부착되어 있을텐데요.


2D Raycaster의 경우 Physics2D.RaycastAll 이 아닌 Physics2D.Raycast 함수를 사용하는 경우 단 하나의 충돌만 판별해내는 것까진 맞습니다.


다만 position.z 값이 같을 경우 우리의 눈에 보이는 것과는 달리 같은 z 값을 가진 위치에 있다고 판단하게 되는 거죠.



a04424ad2c06782ab47e5a67ee91766dc28ff1edd2acc7cdbf11d7c35cd2d221cd110c3748eff64cdc7ad0ebcd1484


그래서 (Collider가 2개 이상 겹쳐 있다면) 마우스는 '더 위' 에 있는 카드에 올려져 있는데도 뒤에 있는 카드랑 번갈아가면서 보이게 되는 겁니다.


이게 원인이구요.





a04424ad2c06782ab47e5a67ee91766dc28ff1edd2acc7cdbf11d0c65cd0de21ff9518f30815c06d23c5f805241a46


따라서 원인에 따른 해결법은 position.z 값을 다르게 해주는 겁니다.


단순히 OnPointerEnter 때 z 값을 높이거나 낮춰주고, OnPointerExit 때 원상복구 해주면 되는 거죠.


물론 레이어를 바꾼다던가 하는 방법도 있긴 하겠지만, 위에 설명 드린 게 원인이고 직접적인 해결법은 position.z 값을 변경하는 것입니다.


두서 없이 글을 작성했는데 설명이 잘 되었으면 하네요. 감사합니다.




++ 내용 추가



가장자리에 마우스 둘 때도 깜빡거린다고 하셔서...


사실 이 부분에 대해서는 보여진 영상만으로는 원인을 찾기 어렵습니다.


7fed8272a88369eb3cea86e1448875686cc5d174076f92e8aebf0730c31d409c29c12a270303b24975bcd5bd5dee59a632eaa318c5230d33bda08776a2ea6ddf6a79


보시다시피 (OnPointerEnter/Exit 사용 시) 가장자리에 두는 것만으로도 깜빡거리진 않습니다.


그렇다면 환경이 다르다고 유추해볼 수 있는데...


개인적인 추측으로는 다른 Collider 가 겹치는 게 아닐까 싶습니다.


제 추측이 정확하진 않을 수 있지만 비슷한 사례를 예로 들자면 UI 등의 Raycast Target이 겹치는 경우인데요.




a04424ad2c06782ab47e5a67ee91766dc28ff1edd2acc7cdbf11d7c059d0d521d9898ae08d9e10e13f86f75a412d


a04424ad2c06782ab47e5a67ee91766dc28ff1edd2acc7cdbf11d7c059d1d721392c9a6a75a8f410b2b809d7db074d


TextMesh Pro 등의 RectTransform이 너무 크게 설정되어 있는 경우


UI 이미지나 텍스트는 정상적으로 보일 수 있으나 실제로는 큰 부분을 차지하고 있는 걸 확인할 수 있습니다(노란 선).



7fed8272a88369eb3cea86e14583776eecc544e3c87cf27b08188968d99336883762786e21db6d1af7d8a098a7889861101fda1c6b4aad2a6f4b902cf68a6d6ebef2


이런 경우에는 Raycast 에 간섭이 생겨 딱 저 크기(노란 선 부분)만큼 제대로 동작하지 않습니다.


비슷한 원리로 다른 Raycast Target 이 관여를 해 깜빡 거리는 게 아닐까? 하고 추측해봅니다...