Tilemap을 이용하여 맵 만들고 있고, 해당 Tilemap Collider는 'Tilemap Collider 2D' 와 'Composite Collider 2D'를 이용하여 충돌체를 만들어 놨음
Raycast를 통해서 유닛 발 밑 GroundCheck 할 겸 아래를 쏘는 Ray를 만들고 필터를 이용해 법선 벡터(normal)가 대충 [0, 1], 즉 각도가 90+-인 지형만 Ground로 인식하게 만들어놨음
그런데 지금 문제가 뭐냐면
내가 생각한 결과는 오른쪽 벽면은 표면의 법선벡터는 항상 (-1, 0)이 나올 수 밖에 없고, 그러기 때문에 검출이 안된다고 판단했는데
결과는 저 오른쪽 벽에 맞고 법선벡터가 (0,1)으로 검출이 되어버림. 심지어 바닥까지 닿지도 않고 발사하자마자 그 자리에서 떠버림;;
==============================================================================
GPT에도 표면의 법선벡터가 결과로 나온다고 했는데 지금 좀 햇갈림;
물론 Side는 검출안되게 간격을 주는 방법으로 해결은 가능할것 같은데, 해결방법이 중요한게 아니라 왜 저렇게 나오는지 모르겠음.
내가 알고 있는게 다른 것 같은데 저 현상에 대해서 명확하게 설명가능하거나 의견 제시해 줄수있는 똑똑한 사람 있음??
아 버전은 유니티 6000.0.7f1이야
유닛은 콜라이더가 없음? 오른쪽 벽이랑 겹쳐지지 않으면 발생하지 않을 문제 같아서
문제 해결은 간격 넣어주면 될 것 같은데, 표면의 법선벡터가 저렇게 검출이 되어버리면 내가 알고있던 유니티 물리를 믿을 수가 없어서 좀 해결하거나 원리를 알고싶음
아마도 입사 벡터가 표면이랑 동일하면 그런 것 같은데 수학공부안해서 모르겠음.
우측면은 회전된 상태임? - dc App
노노 Tilemap Collider 2D와 Composite Collider 2D를 이용해서 회전은 안하고 결합만 되어있음
결합되어 있으면 하나로 보아서 생기는 문제일수도? 그리고 회전 안 되어 있으면 법선이 -1 0이 될 수 있나? - dc App
적어주신 내용만 보면 x축이 10인 곳에 오른쪽 벽면이 있고 즉 (10, n), 10,10에서 레이캐스트를 (10,0)을 향해 쐈다로 보이는데 같은 점인 (10,10)에 오른쪽 벽면이 있기 때문에 오른쪽 벽면이 검출되고 distance가 0으로 나오는걸로 보이네요
https://docs.unity3d.com/ScriptReference/RaycastHit2D-normal.html
밑에
note
내부에서 시작하면 이렇게 되는구나 doc 한번더 정독할껄 그랬네. 감사합니다