For min and max value you can probably use math.clamp
your method is correct but I think if the distance is more than 50 then, the value becomes lower than the min value
for example,
distance = 55
requiredVal = 10 - (distance*(5/50))
requiredVal = 10 - (55*(5/50))
= 10 - 55*0.1
= 10 - 5.5
= 4.5
And 4.5 is lower than the min value 5
So you could just add an if statement like
if distance >= 50 then
requiredVal = 5
else
requiredVal = 10 - (distance*5/50)
end
I’m trying to set the min to 0.5 and the max to 0.05 but it just gives me a negative number.
Yeah I tried using it but I don’t quite know how math.clamp works even after reading the description.
Is there anyway I can make it so the min is lower then the max?
First of all, to get the percentage of the distance in the interval (0, 50)
, which should just be distance/50
(where distance
is (character.HumanoidRootPart.Position - part.Position).Magnitude
).
To apply this percentage to the MIN and MAX, you first need to apply the percentage on the distance between MAX and MIN (meaning MAX - MIN
) so you get (MAX - MIN)*(distance/50)
, and add MIN
to that since it’s our starting value.
At the end, you have this:
MIN + (MAX - MIN)*(distance/50)
What if the distance
was greater than 50? (MAX - MIN)
would overshoot too. You simply clamp the end value, with the minimum value being MIN
, and maximum being MAX
.
math.clamp(MIN + (MAX - MIN)*(distance/50), MIN, MAX)
If the MAX is less than the MIN, it’s gonna give you a negative value, which is totally logical. Why are you making the MAX smaller than the MIN anyways? Just flip them so MAX
is 0.5
, and MIN
is 0.05
, or just take the math.abs
of the original result.
The reason is because I’m trying to make a heartbeat sound the closer you get to the part and I want the sound to get faster the closer you get and I have a cooldown before the heartbeat sound plays again. I want the value to get lower the closer you get to the part so the heartbeat will play faster.
In the formula I provided above, the more the distance between the character and the part converges to 0, the more your cooldown value converges to MIN
, meaning it should be what you want.
math.clamp( value, min, max ) just returns the input value but within the range. Examples:
math.clamp(-6, 1, 5)
would return 1
math.clamp(12, 1, 5)
would return 5
math.clamp(3, 1, 5)
would return 3
The 1 -
shouldn’t be there actually, the end product is
math.clamp(MIN + (MAX - MIN)*(distance/50), MIN, MAX)
Ohh okay but now it says MAX must be greater then MIN in the output is there anyway to get around this?
As I said earlier, MAX needs to be greater than MIN. Just exchange their values, MAX
is 0.5
and MIN
is 0.05
.
Yeah, I’m a bit dumb but its working perfectly fine now. I’ll mark your original formula as the solution now.
Can you maybe figure out why that does this?
I’m making a script that does what you think it’s for, but for some reason the parts get smaller the closer
it is.
may you release the full script? i dont understand what to do TvT
I ran into the same problem and realized that the equation they provided actually decreases the value instead of increasing. The correct equation would be:
math.clamp(MIN + (MAX - MIN)*(1-(distance/maxDistance)), MIN, MAX)
is there a way to do this but with vector3s because when i multiply vector threes with the result it doesnt multiply it how i want it to