왜 통과되는 거임?

신재윤
신재윤
∙∙조회 47
왜 통과되는 거임?

문제: 특정 땅 타일이 통과된다

 

증상

  • 챕터의 특정 구간에 배치한 땅 타일 중 딱 한 종류만 플레이어가 뚫고 떨어짐
  • 겉보기엔 다른 정상 타일이랑 똑같이 생김

확인해서 배제한 것들

  1. Collider Type: 문제 타일 포함 전부 Sprite로 동일 → 설정 차이 아님

  1. 다른 타일 칠했을 땐 정상 작동, 문제 타일로 다시 칠하면 재현됨 → 그 타일 자체가 원인


ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ추리

다른 타일의 원본 스프라이트와 비교를 해봤지만 모두 똑같은 설정값이었음

유일한 다른점은 타일만 스프라이트 자체가 약간 투명한 이미지임
이것이 문제이지 않을까 싶음

이걸 토대로 늘 가던곳에 가서 물어보고 조사해보기로 함

!

클로드가 알려준 사이트로 가서 확인해보니 유니티가 가끔 타일 랜더링 시에 반투명하면 그런일이 일어난다고 하며 직접 시각적 메시를 정의 해보라고함
<출처>

 

바로 알려준대로 해보기로 했다

 

그리고 다시 테스트 해주면...!

 

 

 

 

 

...

 

 

 

 

 

 

다시

 

 

 

클로드가 너무 멍청하니 콜라이더가 없다고 명확히 설명해주며 composite colider의 문제 가능성에 대해 물어봄

조사결과 Unity는 스프라이트의 콜라이더(Physics Shape)를 감지하는 알파 임계값을 255 중 200으로 고정해두고 있고
알파값이 200 밑이면 "투명하다"고 판단해서 자동으로 콜라이더 모양에서 빠진다고 한다.
그래서 Unity는 Custom physics shape를 활용해서 직접 그리라고 답변했다
<출처>

 

 

그럼 스프라이트의 알파값을 높이면 되는거 아닌가? 라고 생각했지만..
알파값은 원본 이미지에 박혀있고 수정을 위해선 포토샵 등의 이미지 편집툴이 필요하다고 한다.
심지어 그렇게 바꾸면 이미지가 변하기 때문에 추천하지 않는것 이라고 한다.

 

 

 

 

그래서 그냥 콜라이더 면적 그려줬다

 

 

 

 

 

 

 

 

오.

 

 

 

 

 

해결

  1. 문제 스프라이트 선택 → Sprite Editor 열기
  2. 좌상단 모드를 Custom Physics Shape로 변경
  3. 타일 전체를 덮는 사각형 윤곽선을 수동으로 그림
  4. Apply

→ 실제 그림이 얼마나 투명하든 상관없이, 수동으로 그린 모양대로 콜라이더가 생성돼서 해결됨.


오늘의 배운점

  • Unity는 알파값 200/255를 기준으로 자동 콜라이더를 생성/생략한다 (이번 문제의 원인)
  • Mesh Type "Tight" + Draw Mode "Simple" 에서 반투명 픽셀은 렌더링 문제가 날 수 있다 (이번 원인은 아님)
  • 클로드는 멍청하다 AI에게 말할때 더 구체적으로 말할수록 더 답을 잘 내놓는걸 가끔 까먹는데 다시 상기시켜줬다
  • 여러 미친짓을 하며 복기를 하니 기억속에 잘 남는다