-
Автор темы
- #1
Бюджет гайда-бутылка пива , и пузо ежова под рукой.
НЕ ПИЗДИТЬ НОГАМИ!
Так-с , нам нужно создать переменные с цветами , которые будем юзать в нашем переливании цветов-у меня это зеленый,красный,желтый.У вас же они могут быть другие,по вашему вкусу.
Далее мы создаем оператор,который вычисляет процентное значение здоровья путем деления текущего здоровья (hp) на максимальное здоровье (maxHp)
Также создаем переменную currentColor, которая будет использоваться для хранения цвета в зависимости от процентного значения здоровья.
Далее создаем условное выражение, которое выбирает цвет в зависимости от процентного значения здоровья (
Если
Если
Вот что в итоге вышло-
Я думаю не стоит говорить,что это мы пихаем в метод render,перед рендером самой полоски ХП
Далее у нас осталось самое простое-зарендерить это все.
Все что нужно - это заменить значение цвета с style.getFirstColor().getRGB(), style.getSecondColor().getRGB() на наш currentColor.getRGB
У меня вышло так -
Вот что у нас вышло -
Всем спасибо кто был,буду рад клоунам и попкорну.
НЕ ПИЗДИТЬ НОГАМИ!
Так-с , нам нужно создать переменные с цветами , которые будем юзать в нашем переливании цветов-у меня это зеленый,красный,желтый.У вас же они могут быть другие,по вашему вкусу.
Java:
// Градиентный переход цвета полоски здоровья
Color greenColor = new Color(0, 153, 76);
Color yellowColor = new Color(204, 204, 0);
Color redColor = new Color(204, 0, 0);
Также создаем переменную currentColor, которая будет использоваться для хранения цвета в зависимости от процентного значения здоровья.
Java:
float healthPercentage = hp / maxHp;
Color currentColor;
healthPercentage
). Если
healthPercentage
больше или равно 0.5, то это означает, что здоровье более чем половина максимального значения. В этом случае используется переменная ratio
, которая вычисляется как (healthPercentage - 0.5) * 2
, чтобы преобразовать диапазон значений в интервал от 0 до 1. Затем функция blendColors()
вызывается с использованием yellowColor
и greenColor
, а также ratio
для плавного смешивания этих двух цветов в пропорции, определенной значением ratio
.Если
healthPercentage
меньше 0.5, то это означает, что здоровье менее чем половина максимального значения. В этом случае используется другая переменная ratio
, которая вычисляется как healthPercentage * 2
, чтобы также преобразовать диапазон значений в интервал от 0 до 1. Затем снова вызывается blendColors()
, но уже с использованием redColor
и yellowColor
, и значение ratio
для плавного смешивания цветов.
Java:
if (healthPercentage >= 0.5f) {
float ratio = (healthPercentage - 0.5f) * 2;
currentColor = blendColors(yellowColor, greenColor, ratio);
} else {
float ratio = healthPercentage * 2;
currentColor = blendColors(redColor, yellowColor, ratio);
}
Java:
Color greenColor = new Color(0, 153, 76);
Color yellowColor = new Color(204, 204, 0);
Color redColor = new Color(204, 0, 0);
float healthPercentage = hp / maxHp;
Color currentColor;
if (healthPercentage >= 0.5f) {
float ratio = (healthPercentage - 0.5f) * 2;
currentColor = blendColors(yellowColor, greenColor, ratio);
} else {
float ratio = healthPercentage * 2;
currentColor = blendColors(redColor, yellowColor, ratio);
}
Далее у нас осталось самое простое-зарендерить это все.
Все что нужно - это заменить значение цвета с style.getFirstColor().getRGB(), style.getSecondColor().getRGB() на наш currentColor.getRGB
У меня вышло так -
Java:
DisplayUtils.drawRoundedRect(posX + headSize + spacing + spacing, posY + height - spacing * 2.0f - 2.0f, (width - 42.0f) * this.healthAnimation, 7.0f, new Vector4f(4.0f, 4.0f, 4.0f, 4.0f), currentColor.getRGB());
DisplayUtils.drawRoundedRect(posX + headSize + spacing + spacing, posY + height - spacing * 2.0f - 2.0f, (width - 42.0f) * this.healthAnimation, 7.0f, new Vector4f(4.0f, 4.0f, 4.0f, 4.0f),currentColor.getRGB());
DisplayUtils.drawRoundedRect(posX + headSize + spacing + spacing, posY + height - spacing * 2.0f - 2.0f, (width - 42.0f) * this.absorptionAnimation, 7.0f, new Vector4f(4.0f, 4.0f, 4.0f, 4.0f), currentColor.getRGB());
Пожалуйста, авторизуйтесь для просмотра ссылки.
Всем спасибо кто был,буду рад клоунам и попкорну.