본문 바로가기

유니티스킬

유니티 2d 게임 타일 지형 만들기unity 2d game tile map making dynamic

기본타일, 울타리 타일로 구성

16*16 2d타일이 구성되있다면 총  16가지의 울타리가 준비 되있을 것이다.

타일마다 프리팹화 시켜주자(스프라이트 이름과 프리팹이름을 구분되게끔 지정해주자)

 

/////////전역변수///////

(벡터위치값,문자*)로 구성된 구조체 = tile 

기본타일을 배치하기 위해 위치값을 담은 tile리스트 = basicTile

울타리타일을 배치하기 위해 위치값을 담은 tile리스트 = outTile

////////메인코드///////

1. 기본타일이 설치될 위치벡터들을 basicTile리스트에 add해준다 이때 문자열은 basic으로 해준다.

2. 기본타일의 8방향*의 각각의 벡터값이 기본타일위치 리스트에 포함되어 있는지 검사

3. 포함되지 않았다면 해당벡터값을 outTile리스트에 add해준다 이때 문자열은 ""으로

4. 16가지 울타리 타일을 판별하기 위해 outTile리스트에 들어간 내용의 동,서,남,북 벡터값을 '순서대로'검사해서 

    해당위치의 벡터값이 outTile에 검사해서 존재한다면 문자열에 각각 EWSN문자*를 추가해준다.

 

5. Instantiate를 이용해 basicTile의 벡터위치에 기본타일프리팹을 생성해준다.

6. 마찬가지로 Instantiate를 이용해 outTile의 벡터위치에 울타리타일프리팹을 생성해주는데

     이때 Switch구문을 이용해 문자열로 구분해서 알맞는 울타리타일을 생성해준다.

 

 

 

 

*문자: 설치할 타일의 종류를 판별하기 위한 문자

*8방향: 기본타일이 (x,y)라면 (x,y+1)(x+1,y+1)(x+1,y)(x+1,y-1)(x,y-1)(x-1,y-1)(x-1,y)(x-1,y+1)

            의 해당되는 위치

*EWSN: 예를 들자면 동쪽 서쪽에 울타리가 위치해 있다면 해당 타일의 문자열은 "EW"가 된다.

 

 

#확장요소

1.랜덤맵을 만들고 싶다면 기본타일배치에 랜덤요소를 가미해준다. 타일을 덧붙일 방향이라던지 한쪽을 빼준다던지

    전체맵을 9개의 정사각형으로 만든 큰 정사각형이라 생각하고 여기서 몇개를 제외시키고

    다시 작은 정사각형에서 몇개의 타일을 제외하거나 붙여준다면 괜찮은 그림이 나올듯

2.계속해서 맵을 만들어야 한다면 오브젝트풀링을 도입할것.

3.문자열 부분을 string말고 int를 이용해 1과0으로 구분하는 방법 => 해쉬코드를 이용하는 방법?

 

 

### 앞으로 더 업데이트 하겠습니다.###

참고할 사이트

https://mrbinggrae.tistory.com/66?category=818359

https://www.youtube.com/watch?v=B3QsIIp1M2Y&list=PLctzObGsrjfxSys0Tdq9vPl_YGVYSI337

https://www.youtube.com/watch?v=hk6cUanSfXQ