У вас есть приложение для Android, на котором работает Libgdx со многими спрайтами, все вокруг. В настоящее время я различаю их по-разному в зависимости от того, к какой группе они принадлежат, например, «красный», «зеленый», «синий» и т. Д. Однако я бы предпочел только цветную часть спрайта вместо всего.Libgdx - Окрашивание только одной части спрайта динамически
В настоящее время я использую:
batch.begin();
batch.setColor(color1);
batch.draw(group1);
batch.setColor(color2);
batch.draw(group2);
etc..
batch.end();
batch.setColor(color)
используется для окраски партии и применить это ко всему спрайта. Когда эта группа будет выполнена, я меняю цвет и перехожу к следующей группе. Я перезагружаю цвет партии, когда делаю это с группами.
Есть ли способ для шейдера/блендера только для окрашивания части спрайта? Например, все, что окрашено red в моей текстуре должно рассматриваться как «динамическая область», которая затем может быть окрашена во все, что я динамически устанавливаю.
Я не могу использовать прозрачность, так как края текстур прозрачны и должны оставаться таковыми для смешивания.
Большое спасибо
Привет, Рара, спасибо, что вернулись ко мне. Бит смущен вашим методом. В настоящее время textureregion - это возвращаемый участок атласа для спрайта, который я хочу отобразить, скажем, персонажа. Как я могу раскрасить только часть этого возвращенного спрайта? Вы создаете разные области текстуры для каждой части этого символа? – Jammo
Да. Вы должны добавить еще одну текстуру в свой атлас, на котором видна только часть вашего персонажа, для которой вы хотите изменить цвет. Затем создайте 'MySprite', где' region1' - текстура персонажа, а 'region2' - вторая текстура. Не забудьте установить значение «extraColor» перед рендерингом. – Rara
Этот метод кажется довольно много накладных расходов, хотя? У меня есть спрайт, который был повернут в 8 направлениях, и каждое направление анимировано с 4 кадрами. Так что мне понадобится изображение области текстуры в атласе для каждого из них? Просто похоже на кошмар адмирала, особенно если обновляется графический символ. Используемые спрайты имеют прозрачные пленки - нет ли способа ориентировать определенный цвет спрайта, например, Magenta, и только динамически окрашивать эту часть? Как, например, зеленый/синий экран работает с телевизором/фильмами – Jammo