Есть значение:
local hp = ply:Health() or 0
нужно плавно менять (линейно интерполировать), и выводить.
Как такое сделать? Нашёл math.ease.OutExpo, но как использовать его так и не понял.
Есть значение:
local hp = ply:Health() or 0
нужно плавно менять (линейно интерполировать), и выводить.
Как такое сделать? Нашёл math.ease.OutExpo, но как использовать его так и не понял.
Если лень смотреть то:
local smoothHealth = 100
hook.Add("HUDPaint" , "hud" , function()
smoothHealth = Lerp(0.01 , smoothHealth , LocalPlayer():Health())
draw.RoundedBox(0,0,0, smoothHealth * 5,100 , Color(255,120,120,255))
end)
Кажется что это совсем не то, и работает совсем криво.
Из-за качества не видно, напиши, что конкретно не так?
нужна плавная смена этого числа, как пример:
было 100 хп, => стало 50, и между ними нужен плавный переход.
А на видео видно что работает крайне криво, и финальное значение переменной smoothHealth
, колеблется в районе 90 - 95, когда счётчик хп в районе 10.
upd: залил в хорошем качестве
Написал, вроде работает.
Попробуй
local smoothHealth = 0
local lastUpdateTime = 0
local updateInterval = 0.01
function updateSmoothHealth()
local elapsedTime = CurTime() - lastUpdateTime
if elapsedTime > updateInterval then
smoothHealth = Lerp(0.01, smoothHealth, LocalPlayer():Health() or 0)
lastUpdateTime = CurTime()
end
end
hook.Add("HUDPaint", "hud", function()
updateSmoothHealth()
draw.SimpleText(string.format("%.0f", smoothHealth), "DermaLarge", 950, 100, Color(255, 120, 120, 255), TEXT_ALIGN_LEFT, TEXT_ALIGN_TOP)
end)