본문 바로가기
GameMaker강좌[GMS2]/GMS2기초강좌

[게임메이커 강좌-기초][GMS2] 코드로 타일 배치-3 : 레이어에서 타일맵 찾기

by 타락카얀 2021. 2. 16.
728x90

 

 

GAME MAKER 강좌

 

 

KAYAN

 

 

 

 

 

◈ 레이어에서 타일맵 찾기

 

 

일반적으로 룸의 타일레이어에 타일셋이 지정되어있는 경우 아래의 함수들로 타일맵의 ID를 찾을 수 있습니다.

 

      ◎ layer_get_id(layer_name) : 레이어 ID 반환

      layer_tilemap_get_id(layer_id) : 타일맵 ID 반환

 


      var layer_id = layer_get_id("Tiles_1");
      var map_id = layer_tilemap_get_id(layer_id);


 

다만, 룸의 타일레이어에 타일셋이 지정되지 않은 경우나, 새 레이어에서는 타일맵을 찾지 못하는 경우가 있습니다.

레이어에 생성된 타일맵을 알 수 없을 때, 타일맵을 찾을 경우 아래와 같이 설정하면 레이어에 생성된

타일맵의 ID를 찾을 수 있습니다.

 


      //global.tile_layer 에 레이어 ID를 할당했을 때 단일 타일맵을 찾는 경우


      var a, _id, i;
      a = layer_get_all_elements(global.tile_layer);
      _id = -1;
      for ( i = 0; i < array_length(a); i++;)
      {
      if layer_get_element_type(a[i]) == layerelementtype_tilemap //요소가 타일맵일 때 ID를 저장
            {
            _id = a[i]; break;
            }
      }


      map_id=_id; //찾은 맵 ID를 map_id변수에 할당하여 사용함


 

여러개의 타일 맵을 찾을 경우 아래와 같이 배열에 타일맵 ID를 저장하여 사용할 수도 있습니다.

 


      //레이어에 존재하는 모든 타일맵을 찾아 maplist 변수에 배열로 저장할 경우


      var a, maplist, count,i;
      a = layer_get_all_elements(global.tile_layer);


      maplist[0] = -1;
      count = 0;


      for ( i = 0; i < array_length(a); i++;)
      {
            if layer_get_element_type(a[i]) == layerelementtype_tilemap//요소가 타일맵일 때 ID를 저장
            {
            maplist[count] = a[i];
            count + = 1;
            }
      }


      //이후 타일맵 ID를 저장한 maplist 배열을 사용하면 됩니다.


 

참고로 배열의 크기는 아래의 함수를 사용하여 찾을 수 있습니다.

 

      array_length(variable)

 

예)

 


      //타일맵 ID를 저장한 maplist 배열을 사용할 경우.
      for(i = 0; i < array_length(maplist); i++;)
      {
      if maplist[i] >= 0{ /*이벤트*/ }
      }


 

(▲ 타일 배치)

 

 

 

 

- 끝 -

 

 

 

 

 

300x250

댓글