게임 개발/유니티(Unity)

[Unity] 2D 타일 충돌 처리

마달랭 2024. 12. 26. 16:51
반응형

개요

충돌 처리를 통해 player가 특정 타일로 이동하지 못하게 구현할 수 있다.

예를 들어 맵 밖으로 나가지 못하게 하거나, 물, 장애물들을 설정해 이동하지 못하게 하는 것이다.

이는 타일을 Layer로 관리하여 플레이어가 특정 타일에 접근 시 이동이 불가능하게 구현하면 된다.

따라서 타일맵에 충돌 관련 컴포넌트를 추가해 주어야 한다.

 

player에 대한 충돌 처리는 이미 이전에 활성화 해 놓았으므로 타일맵에 대한 설정이 필요하다.

캐릭터 충돌 처리 컴포넌트는 아래 발행글을 확인하자

 

[Unity] 캐릭터 이동

개요유니티에서 2D 캐릭터를 상하좌우로 이동시키는 방법에 대해 알아보자캐릭터 스프라이트 배치Rigidbody 2D 추가 (물리 적용)Collider 2D 추가 (충돌 처리)캐릭터 이동 스크립트 작성위 순서대

zzzz955.tistory.com

 

 

타일맵 세팅

 

우선 구현하는 방법에 따라 다르겠지만 보통 2D게임에서는 이동가능, 불가 지역으로 나뉜다.

따라서 나는 각 레벨에 타일맵을 세개씩 넣어주었다.

  1. 맵의 범위를 나타내기 위한 타일맵
  2. 이동 가능 지역을 나타내기 위한 타일맵
  3. 이동 불가 지역을 나타내기 위한 타일맵

위 세가지의 타일맵을 덮어쓰는 형식으로 구현하였다.

예를 들어 맵의 범위를 지정할 타일맵을 하나 구현해 준다.

그 위에 동일한 크기의 모든 지역을 이동 가능하도록 타일맵을 하나 더 구현해 준다.

그 위에 이동 불가 지역을 세팅할 타일맵을 구현해 준다.

 

이렇게 세팅을 해줄 경우 맵의 범위를 벗어날 수 없으면서 이동 불가 지역은 캐릭터가 갈 수 없게 구현할 수 있다.

 

 

이동 불가 지역 설정

위에서 설정한 이동 불가 지역 타일맵에 대해 충돌 관련 컴포넌트를 추가해 준다.

이 방법으로 플레이어가 해당 타일에 접근이 불가하도록 설정해 줄 수 있다.

나는 Unwalkable_Tilemap을 이동불가 지역의 타일맵으로 설정해 주었다.

또한 직관적인 표현을 위해 이동 불가 지역에 빨간색 타일을 배치하였다.

 

 

  1. 빨간색 타일이 있는 타일맵을 선택
  2. Inspector에서 Add Component를 클릭하고, Tilemap Collider 2D를 추가
  3. 바로 위에 Composite Collider 2D도 추가
  4. Tilemap Collider 2D의 Used by Composite 체크
  5. Rigidbody 2D를 추가하고, Body Type을 Static으로 설정

 

이렇게 하면 빨간 타일이 충돌 영역으로 작동해 캐릭터가 통과하지 못한다.

 

 

추가로, 맵의 범위에도 동일하게 컴포넌트를 추가하여 이동 불가 지역으로 설정해 준다.

단, Tilemap Renderer에서 Order in Layer을 잘 세팅해 주어야 한다.

 

  1. 맵의 범위를 나타내기 위한 타일맵 (Order in Layer : 0, 충돌 관련 컴포넌트 추가)
  2. 이동 가능 지역을 나타내기 위한 타일맵 (Order in Layer : 1)
  3. 이동 불가 지역을 나타내기 위한 타일맵 (Order in Layer : 2, 충돌 관련 컴포넌트 추가)

이런 식으로 구현해 주면 맵의 범위를 벗어날 수 없으면서 이동 불가 지역은 갈 수 없게 된다.

나머지 공간은 자유롭게 이동할 수 있다.

 

 

테스트

위와 같이 세팅을 하였다면 주어진 타일맵의 범위에서 이동 관련을 구현할 수 있게 된다.

 

 

 

728x90
반응형

'게임 개발 > 유니티(Unity)' 카테고리의 다른 글

[Unity] 2D 캐릭터 위치 변경  (0) 2024.12.27
[Unity] 오브젝트 네이밍 자동화  (0) 2024.12.27
[Unity] 2D 캐릭터 이동  (0) 2024.12.26
[Unity] 2D 타일맵 배치  (1) 2024.12.26