# How do i get the opposite of a number

1. What do you want to achieve? I want the opposite of a number example: 1 would be 0 and 0 would be 1.

2. What solutions have you tried so far? I have tried using math.abs but that just gave me the same number and other posts that looked similar didnt have what i needed.

my script: (local script)

``````local char = game.Players.LocalPlayer.Character
while wait() do
local Distance = (char.HumanoidRootPart.Position - game.Workspace.ScreenShaker.Position).Magnitude
local Rounded = math.round(Distance)
local intensity = math.abs(1 - Rounded) --this is the line where i get problems
print(intensity)
end

``````

it prints a low number when i am close to the part and a high number when im far away from it.
this wont work as the screenshake should be intense when im close to the part and not when im far away from it.

This is for a screenshake effect.

You must have an effective rolloff distance for the effect though. So just use that as the basis for maxdist and subtract the Magnitude distance, ie:

``````local rolloff = 100
local Distance =  math.round((char.HumanoidRootPart.Position - game.Workspace.ScreenShaker.Position).Magnitude)
local intensity = rolloff - Distance
``````

In the above, if the user is 100 studs away, then intensity = 0. If they are 10 studs away, then intensity of 90. I hope that makes sense.

You can add a radius for linear interpolation for the screenshake effect, assuming 0 is highest and 1 is the lowest intensity for your effect.

``````local ScreenShakeRadius = 50
local dist = (HumRp.Position - workspace.ScreemShaker.Position).Magnitude
--cancel the effect and don't continue with the bottom
end

local intensity = dist / ScreenShakeRadius
intensity = math.abs(intensity - 1) --inverse
if intensity < 1 then
--do the screen effect when it's between 0 and 1
end
``````

That worked! i just had to clamp it to 0 and the rolloff so that it doesnt go into the negatives

Edit: now the while loop doesnt stop:

``````local char = game.Players.LocalPlayer.Character

if child.Name == "A-10" or child.Name == "X-10" then
while child do
wait()
local Distance = (char.HumanoidRootPart.Position - child.Position).Magnitude
local Rounded = Distance
local rolloff = 120
local intensity = math.random(0.1, math.clamp(rolloff, 0, 1))
local final = rolloff - Rounded
local clamp = math.clamp(final, 0, intensity)
char.Humanoid.CameraOffset = Vector3.new(math.random(0, clamp), math.random(0, clamp), math.random(0, clamp))
end
end
end)
``````

the “A-10” or “X-10” are the monters and they get cloned from ReplicatedStorage in a script. at the end they get destroyed but the while loop doesnt stop.