Я использую стратегию, основанную на черепичной карте. Моя карта состоит из двух слоев: первая из них видима все время и используется в качестве фона, вторая - для выделения фрагментов. Выделенные плитки показывают возможное движение для игрока. На данный момент прогресс выглядит следующим образом:Подсветка плитки с прозрачностью
Чтобы сделать выделение можно ли использовать этот цикл:
for(int s = 0;s<7;){ for (int i = 0;i<7;i++) { if ((inField(clickx + i,clicky + s)) && !(tileWithPlayer(clickx + i,clicky + s))) { highlight_layer.getCell(clickx + i, clicky+s).setTile(mark); } } s++; }
В этом я использую одну плитку из второго слоя карты к сделайте границу для определенных фрагментов. На данный момент эта плитка имеет только 2px границу прозрачной плитки 32x32. Чтобы исчезнуть подсветка, я использую аналогичные для цикла, где я устанавливаю плитку в нуль. Выбор/отмена выбора плитки отлично работает, но, вероятно, это не самый эффективный способ сделать это. Я хотел бы обменять синие пограничные ящики в цветные прозрачные окна, что-то вроде заранее войн во время движения, или, как это можно увидеть ниже:
Я попытался сделать полупрозрачным плитку на второй слой в черепичной, но без везения. Было бы неплохо, если бы была какая-то возможность применять только полупрозрачный цвет на конкретных плитах, не используя плитку второго слоя. Итак, мой вопрос: как я могу обменивать эти уродливые границы на полностью цветные (полу) прозрачные плитки, чтобы добиться аналогичного результата, как на картинке выше?
Я использую этот способ прямо сейчас, чтобы показать сетку. Однако это решение не самое лучшее, так как я должен сначала нарисовать фрагмент, а затем назначить его TiledMapTile, а затем установить значение null. mark = highlight_layer.getCell (0, 1) .getTile(); highlight_layer.getCell (0, 1) .setTile (null); он отлично работает, но выглядит грязным в коде :) Я попробую TextureRegion. Я как-то пропустил существование этого класса :) –