tile_set_index 함수 설명
tile_set_index 함수는 타일 세트 이미지 내에서 타일의 위치를 나타내는 타일 인덱스를 설정하는 데 사용됩니다. 이 함수는 타일 데이터와 타일 세트 내에서 사용할 타일의 정수 인덱스 값을 인수로 받습니다. 함수는 수정된 타일 데이터 세트를 반환하며, 이는 tilemap_set() 함수를 사용하여 적용할 수 있습니다.
문법
tile_set_index(tiledata, index)
인수 설명
| 인수명 | 타입 | 설명 |
|---|---|---|
| tiledata | Tile Data | 설정할 타일 데이터 |
| index | Real | 사용할 타일의 정수 인덱스 값 |
반환값
- 수정된 타일 데이터
예제 코드
아래 코드는 주어진 레이어에서 타일 맵 ID를 가져오고, 마우스 위치 아래의 셀에 대한 타일 데이터를 가져온 후, 타일 인덱스를 무작위 숫자로 설정하는 방법을 보여줍니다.
var lay_id = layer_get_id("Tiles_sky");
var map_id = layer_tilemap_get_id(lay_id);
var mx = tilemap_get_cell_x_at_pixel(map_id, mouse_x, mouse_y);
var my = tilemap_get_cell_y_at_pixel(map_id, mouse_x, mouse_y);
var data = tilemap_get(map_id, mx, my);
var ind = tile_get_index(data);
data = tile_set_index(data, irandom(23));
tilemap_set(map_id, data, mx, my);
활용 예제
- 타일 변경: 특정 이벤트(예: 플레이어가 특정 지역에 도착했을 때) 발생 시 타일을 변경할 수 있습니다.
gml if (player_reaches_area) { var lay_id = layer_get_id("Ground"); var map_id = layer_tilemap_get_id(lay_id); var mx = tilemap_get_cell_x_at_pixel(map_id, player_x, player_y); var my = tilemap_get_cell_y_at_pixel(map_id, player_x, player_y); var data = tilemap_get(map_id, mx, my); data = tile_set_index(data, new_tile_index); tilemap_set(map_id, data, mx, my); } - 타일 애니메이션: 타일의 인덱스를 주기적으로 변경하여 애니메이션 효과를 줄 수 있습니다.
gml var lay_id = layer_get_id("AnimatedTiles"); var map_id = layer_tilemap_get_id(lay_id); var mx = tilemap_get_cell_x_at_pixel(map_id, animation_x, animation_y); var my = tilemap_get_cell_y_at_pixel(map_id, animation_x, animation_y); var data = tilemap_get(map_id, mx, my); data = tile_set_index(data, (current_frame % total_frames)); tilemap_set(map_id, data, mx, my); - 타일 맵 편집기: 사용자가 타일 맵을 편집할 수 있는 기능을 제공하여, 선택한 타일로 변경할 수 있습니다.
gml if (mouse_button_check_pressed(mb_left)) { var lay_id = layer_get_id("EditableLayer"); var map_id = layer_tilemap_get_id(lay_id); var mx = tilemap_get_cell_x_at_pixel(map_id, mouse_x, mouse_y); var my = tilemap_get_cell_y_at_pixel(map_id, mouse_x, mouse_y); var data = tilemap_get(map_id, mx, my); data = tile_set_index(data, selected_tile_index); tilemap_set(map_id, data, mx, my); }