TOOLS GAMES DEVLOG DOCS ABOUT CONTACT
HOME > DOCS > Unity / C# > 2D Tilemap & RuleTile 자동 지형 배치와 CompositeCollider2D 콜라이더 병합
Unity / C# Beginner Unity 2021.3+ / Unity 6

2D Tilemap & RuleTile 자동 지형 배치와 CompositeCollider2D 콜라이더 병합

인접 타일 패턴에 따라 외벽/코너를 자동 타일링하는 RuleTile 에셋 구축, 수백 개 개별 타일 충돌체를 단일 지형 폴리곤으로 합쳐 물리 부하를 줄이는 최적화.

#Unity #2D #Tilemap #RuleTile #CompositeCollider2D #Optimization
핵심 개념수작업으로 타일 모서리를 일일이 배치하면 레벨 디자인 생산성이 극도로 떨어집니다. RuleTile은 인접 8개 이웃 타일의 유무에 맞춰 최적의 스프라이트를 자동 선택합니다. 또한 개별 타일마다 생성되는 사각형 콜라이더를 CompositeCollider2D로 결합하면 경계선에 캐릭터 발이 걸리는 고스트 버텍스(Ghost Vertex) 현상이 완벽히 해결됩니다.

1. 타일맵 콜라이더 병합 필수 세팅 가이드

컴포넌트필수 옵션 설정핵심 역할
TilemapCollider2DUsed By Composite = 체크(True)개별 타일 사각형 충돌체를 부모 Composite에 제공
CompositeCollider2DGeometry Type = Polygons or Outlines인접한 모든 타일의 외곽선만 추출해 단일 폴리곤으로 병합
Rigidbody2DBody Type = Static합쳐진 대형 지형의 물리 연산 비용을 0으로 고정

2. 커스텀 런타임 타일 교체 스크립트

DestructibleTilemap.cs
using UnityEngine;
using UnityEngine.Tilemaps;

public class DestructibleTilemap : MonoBehaviour
{
    [SerializeField] private Tilemap targetTilemap;
    [SerializeField] private TileBase destroyedTileParticle;

    /// <summary>
    /// 월드 좌표 위치의 타일을 파괴하고 물리 콜라이더를 즉시 갱신
    /// </summary>
    public void DestroyTileAtWorldPos(Vector3 worldPosition)
    {
        Vector3Int cellPos = targetTilemap.WorldToCell(worldPosition);

        if (targetTilemap.HasTile(cellPos))
        {
            // 타일 제거
            targetTilemap.SetTile(cellPos, null);

            // CompositeCollider2D는 SetTile 호출 시 자동으로 외곽선을 재계산함
            Debug.Log($"타일 파괴 완료: {cellPos}");
        }
    }
}

3. 고스트 버텍스(Ghost Vertex) 해결 원리

  • 개별 타일 콜라이더의 함정: 평평한 바닥에 놓인 사각형 타일들이 개별 박스 콜라이더를 가질 경우, 타일과 타일 사이의 미세한 버텍스 이음새에 플레이어의 캡슐/박스 콜라이더 모서리가 걸려 달리는 도중 턱 걸리며 멈추는 현상이 일어납니다.
  • CompositeCollider 병합 효과: CompositeCollider2D를 활성화하면 내부 수평선이 전부 제거되고 수평 지면이 단 하나의 연속된 직선 에지(Edge)로 합쳐지므로 걸림 현상이 100% 해소됩니다.

참고자료 & 관련 링크