[Unity2D] Tilemap & Sprite Collision and Shadow 타일맵 & 스프라이트 충돌 및 그림자
J-sean
2025. 6. 2. 22:07
반응형
유니티 2D Sprite 및 Tile Palette의 각 tile마다 물리적 충돌과 그림자 적용을 위한 Physics Shape을 설정할 수 있다.
스프라이트를 임포트하면 Inspector - Sprite Mode - Generate Physics Shape 설정을 체크해서 Physics Shape 설정을 하지 않은 스프라이트에 대해 기본 Physics Shape을 생성하게 할 수 있다. 하지만 이 설정은 shape이 임의로 정해진다.
원하는 Physics Shape 설정을 위해 Sprite에서 Open Sprite Editor 클릭 - Sprite Editor를 Custom Physics Shape으로 바꾼다
아래 Outline Tool에서 Generate 클릭. (아니면 원하는 Tile에서 클릭&드래그로 Physics Shape을 만들 수 있다)
원하는 형태로 shape을 변경한다. shape은 여러 개 만들 수 있다. 여기서 만드는 Physics Shape은 그림자 뿐만 아니라 충돌 처리를 위한 경계로도 사용된다.
위 그림처럼 필요에 맞게 변경한다.
타일맵은 Tilemap Collider 2D를 추가하고 Composite Operation을 Merge로 바꾼다. Composite Collider 2D를 추가하고, 같이 추가되는 Rigidbody 2D에서 Body Type을 Static으로 바꾼다. (Body Type이 Dynamic으로 되어 있으면 게임 실행 시 밑으로 떨어진다)
Shadow Caster 2D를 추가하고 Casting Source를 Composite Collider 2D로 바꾼다. (Composite Collider 2D 관련 과정은 충돌 계산 및 그림자 효과를 효율적으로 만들기 위한 것이다. 그냥 Tilemap Collider 2D와 Shadow Caster 2D만 추가해서 Shadow Caster 2D의 Casting Source를 Tilemap Collider 2D로 바꾸고 사용해도 문제는 없다)
만약 위 과정을 진행 하고나서 나중에 Sprite의 Physics Shape을 바꾸면 이미 만들어져 있는 Tilemap에서는 바뀐 Physics Shape이 바로 적용되지 않는다. 이때는 Tilemap Collider 2D를 Reset한다. (그러면 Composite Operation을 다시 Merge로 바꿔줘야 한다)