@Rebel Penguin - далее более понятное объяснение для новичков, по сути ты прав
@hohserg1 тоже верно было бы, но это не то немного, ему же анимация нужна
@BestFoxy че...
Поэтому берем всю суть процесса и раскидываем по пунктам раз не понятно
К примеру было 20 хп, стало 10хп, нужно что-бы оно стало на худе через некоторое время 10-кой и плавно
1. включаем мозги и думаем как делается правильно это
2. понимаем что нам нужно что-то вроде таймера или типо того
3. Делаем временную переменную к примеру
public double hpProgress
, назначать его надо до того как у тебя хп отнялись, т.е. 20 должно быть если доставать с игрока.
4. делаем проверку аля ниже в тик-хандлере/тик-эвенте/где угодно хоть в отдельном потоке главное что-бы обновлялось
public double hpProgress = 20.0D; //То что мы делали раньше,
//тут лучше доставать и назначать через игрока
//далее должен быть обновляемый метод(НЕ myAnimationMethod, потому-что понимай
//что это пример, а если ты всунешь в игру это как есть у тебя НИЧЕГО НЕ ЗАРАБОТАЕТ)
void myAnimationMethod() {
int nowHP = 10.0D; //ХП игрока сейчас, назначать через реальные значения, не как тут
if ((int)hpProgress != nowHP) { //Проверка дабы не циклировать этот код всё время
if (hpProgress > nowHP) {
double var = hpProgress - nowHP; //получили разницу, знаем куда двигаться
hpProgress -= var / X; //Здесь мы уменьшаем var в несколько раз что-бы оно
//уменьшалось кусочками, а не сразу. X - Подбирайте вручную, я бы сделал может 5
} else if (hpProgress < nowHP) {
//теперь то-же самое только будем увеличивать хп
double var = nowHP - hpProgress;
hpProgress += var / X;
} else {
//И здесь мы будем просто устанавливать значение на nowHP если разница
//доли пикселя(на всякий)
hpProgress = nowHP;
}
}
}
5. Подкидываем под текстуру(отображение)
6. наслаждаемся тем что вы гений и вы стали умнее