试图在项目 zomboid 中制作进度条的数学问题
Math problem trying to make a progressbar in project zomboid
我正在为 Zomboid 项目做一个 mod,我似乎无法解决数学问题,所以我得到的值范围从 0 到 1,我希望我的进度条从最大值开始宽度然后随着值的增加而下降。
第一个很简单,我得到了一个介于 100 和 0 之间的值,那么如何使用从 0 开始的值呢?
我试着在 google 上搜索这个,但我的数学很差,找不到答案。
function panel:render()
self:drawRectBorder(30, 30, self:getWidth() - 1, 50, 1.0, 1.0, 1.0, 1.0);
--print((bt_core.player:getBodyDamage():getOverallBodyHealth() / 100) * self:getWidth());
self:drawRect(31, 31, (bt_core.player:getBodyDamage():getOverallBodyHealth() / 100) * self:getWidth() - 3, 48, 1, 0, 0, 1);
self:drawRectBorder(30, 110, self:getWidth() - 1, 50, 1.0, 1.0, 1.0, 1.0);
print(bt_core.player:getStats():getFatigue());
if bt_core.player:getStats():getFatigue() == 0 then
self:drawRect(31, 111, self:getWidth() - 3 , 48, 1, 0, 0, 1);
else
self:drawRect(32, 111,bt_core.player:getStats():getFatigue() / (self:getWidth() - 3) , 48, 1, 0, 0, 1);
end
end
要从范围 0..1 中的变量获取范围 100..0 中的变量,您可以使用 y = 100 - x*100
所以你有一个值 0..1,你想将它映射到 100..0。
将您的值乘以 100 得到 0..100。
要反转它,请从 100 中减去它。100-0 是 100,100-100 是 0...
local newVal = 100 - val * 100
或
local newVal = 100 * (1-val)
我正在为 Zomboid 项目做一个 mod,我似乎无法解决数学问题,所以我得到的值范围从 0 到 1,我希望我的进度条从最大值开始宽度然后随着值的增加而下降。
第一个很简单,我得到了一个介于 100 和 0 之间的值,那么如何使用从 0 开始的值呢?
我试着在 google 上搜索这个,但我的数学很差,找不到答案。
function panel:render()
self:drawRectBorder(30, 30, self:getWidth() - 1, 50, 1.0, 1.0, 1.0, 1.0);
--print((bt_core.player:getBodyDamage():getOverallBodyHealth() / 100) * self:getWidth());
self:drawRect(31, 31, (bt_core.player:getBodyDamage():getOverallBodyHealth() / 100) * self:getWidth() - 3, 48, 1, 0, 0, 1);
self:drawRectBorder(30, 110, self:getWidth() - 1, 50, 1.0, 1.0, 1.0, 1.0);
print(bt_core.player:getStats():getFatigue());
if bt_core.player:getStats():getFatigue() == 0 then
self:drawRect(31, 111, self:getWidth() - 3 , 48, 1, 0, 0, 1);
else
self:drawRect(32, 111,bt_core.player:getStats():getFatigue() / (self:getWidth() - 3) , 48, 1, 0, 0, 1);
end
end
要从范围 0..1 中的变量获取范围 100..0 中的变量,您可以使用 y = 100 - x*100
所以你有一个值 0..1,你想将它映射到 100..0。
将您的值乘以 100 得到 0..100。 要反转它,请从 100 中减去它。100-0 是 100,100-100 是 0...
local newVal = 100 - val * 100
或
local newVal = 100 * (1-val)