Game Maker - создание игр | HellRoom Games
Март 26, 2025, 01:42:30 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.

Войти
Новости:
 
   Начало   Game Maker Помощь Правила форума Поиск Календарь Войти Регистрация  
Страниц: [1]   Вниз
  Печать  
Автор Тема: GMS 2: Тайлы - как получить массив id  (Прочитано 3012 раз)
0 Пользователей и 1 Гость смотрят эту тему.
serega-qb
Новичок
*

Репутация: 1
Offline Offline

Пол: Мужской
API: GameMaker Studio Master
Сообщений: 11



« : Август 30, 2019, 19:23:06 »

Есть задача поменять цвет тайлов, которые расставлены вручную в редакторе комнат.
То ли я не понимаю, то ли так и задумано, но я не могу получить массив этих самых тайлов.

Но те тайлы которые кодом создаются, - для них массив могу получить.
Сам проект новый, т.е. не импортированный со старой GMS
 
Скрипт для получения массива:
Код:
var _layer = argument0;

var _e = layer_get_all_elements(_layer);

var _id = []; // array of tiles
var k = 0;

for(i=0; i<array_length_1d(_e); i++)
if layer_get_element_type(_e[i]) == layerelementtype_tile
{
_id[k] = _e[i];
k++;
}

return _id;



Может кто-нибудь знает в чем проблема. Или никак нельзя взаимодействовать с тайлами расставленными вручную?
« Последнее редактирование: Август 30, 2019, 20:05:06 от serega-qb » Записан
Neo
*LisenokArtist
GM Pro user
*

Репутация: 280
Offline Offline

Пол: Женский
Награды:
За медальки для форума!500 сообщений!За постоянность! [200 дней на форуме]За лояльность! [+150 репутации]
API: GameMaker Studio Free
Сообщений: 971



« Ответ #1 : Август 30, 2019, 20:41:31 »

layer_get_id_at_depth(depth) , например.
Записан

serega-qb
Новичок
*

Репутация: 1
Offline Offline

Пол: Мужской
API: GameMaker Studio Master
Сообщений: 11



« Ответ #2 : Август 30, 2019, 21:04:41 »

Так мне эта функция не нужна, я layer_id знаю и передаю в скрипт. Мне id-тайлов нужны
Записан
Neo
*LisenokArtist
GM Pro user
*

Репутация: 280
Offline Offline

Пол: Женский
Награды:
За медальки для форума!500 сообщений!За постоянность! [200 дней на форуме]За лояльность! [+150 репутации]
API: GameMaker Studio Free
Сообщений: 971



« Ответ #3 : Август 30, 2019, 21:35:10 »

You can use this function to get the unique tile "id" for all tiles placed at a given depth. The function will return a 1D array, with each entry being the ID value for a single tile.
~Вы можете использовать эту функцию чтобы получить уникальный идентификатор тайла для всех тайлов, размещенные на заданной глубине. Данная функция вернет одномерный массив, где каждая запись будет являться значением идентификатора тайла.
« Последнее редактирование: Август 30, 2019, 22:01:11 от Neo » Записан

S_Kleer
GM Pro user
*

Репутация: 567
Offline Offline

Награды:
За лояльность! [+500 репутации]3 место в Дичайшем джеме #82000 сообщений!За постоянность! [50 дней на форуме]Настоящий игродел!2 место на HellRoom Jam #5, Контраст...
API: GameMaker Studio 2
Сообщений: 2734


« Ответ #4 : Август 30, 2019, 21:43:41 »

В справке написано, что layerelementtype_tile используется для получения "устаревших" тайлов. Т.е. из версии гмс 1.4.

В вашем же случае, если вы используется asset layer для тайлов и расставляете их спрайтами, то попробуйте изменить условие на if layer_get_element_type(_e) == layerelementtype_sprite.
Если же вы используете tile layer то там id тайлов вообще нету. Так же как и перекраски тайлов. Ко всем тайлам идёт обращение через функции tilemap_get() или tilemap_get_at_pixel().
Записан

Коты - Мирители
serega-qb
Новичок
*

Репутация: 1
Offline Offline

Пол: Мужской
API: GameMaker Studio Master
Сообщений: 11



« Ответ #5 : Август 30, 2019, 23:19:36 »

Neo, ну странно тогда, потому что у меня в справке эта функция только для слоев, про тайлы там ничего. Я вообще изначально не читая, проверил как вы предложили, - массив был пустой. Может от версии ГМС зависит, хз

Из моей справки layer_get_id_at_depth:
S_Kleer, ясно спасибо. Я использую именно tile layer, т.к. нужны brush. А устаревшие функции - да, знаю. Я опасался, что если использовать спрайты вместо чистых тайлов, то производительность станет сильно хуже. Но вот сейчас дошло - в старых проектах перенесенных на ГМС 2 производительность вроде не упала, а там по-сути тайлы были сконвертированны в спрайты
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  

HellRoom Games © 2006-2012 All Rights Reserved
Powered by SMF 1.1.21 | SMF © 2013, Simple Machines
Страница сгенерирована за 0.075 секунд. Запросов: 29.