Войти
Urho3DФорумЗАДАВАЙТЕ ВОПРОСЫ

Urho2DTileMap

#0
18:03, 12 янв 2023

Вот отрываю 36 пример, где якобы показана работа с с картой тайлов.

          // Swap grass and water
            if (layer->GetTile(x, y)->GetGid() < 9) // First 8 sprites in the "isometric_grass_and_water.png" tileset are mostly grass and from 9 to 24 they are mostly water
                sprite->SetSprite(layer->GetTile(0, 0)->GetSprite()); // Replace grass by water sprite used in top tile
            else
                sprite->SetSprite(layer->GetTile(24, 24)->GetSprite()); // Replace water by grass sprite used in bottom tile

На деле, мы подменяем картинку в тайле, но номер у тайла остаётся прежний. и зачем это надо? Если всё так задумано было, то зачем нужен этот GetGid()?
Я вообще не понимаю, как использовать это всё. Вот я хочу генерировать свою карту, то нет реальных методов, чтобы присваивать нужные значения тайлам.

#1
19:16, 12 янв 2023

stratego
> не понимаю
это как раз и есть тот чертов ООП, который вы не любите)

инкапсуляция, млин)

stratego
> но номер у тайла остаётся прежний
ваще по приведенному коду нельзя сделать такой вывод.

передергивание ида может выполняться в нутрях sprite->SetSprite(...

ну а энтот самый sprite, это очевидно не просто одинокая картинка,
а очевидно целый компонент со своей начинкой среди которой возможно есть и id.

#2
19:42, 12 янв 2023

Если запустить пример, то видно, что он подменяет только картинку, и что было водой, то водой и осталось, хоть и выглядит как трава ))
Да и спрайт не имеет никакого значения, которое тянуло бы на личный номер так сказать )) Оно и понятно, спрайт же везде используется, не только в тайловых картах.

В моём представление, тайловая карта должна хранить в себе массив картинок и ссылку, индекс на нужную картинку в каждой своей клетке, ну это если по простому говоря. В данном случае слой, должен это хранить, для каждого слоя - свой набор же. Всё таки Движок не на первую Циву рассчитан, а на все случаи жизни ))

Urho3DФорумЗАДАВАЙТЕ ВОПРОСЫ