I'm making light controls for a stage. This script turns a stage light off and on.
01 | local ClickDetector = script.Parent.ClickDetector |
02 | local StageLights = script.Parent.Parent.Parent.Parent.StageLights |
03 |
04 | function LightSwitch() |
05 | if StageLights.BackLeftSpotlight.SpotLight.Brightness = = 0.2 then |
06 | StageLights.BackLeftSpotlight.SpotLight.Brightness = 1 |
07 | script.Parent.BrickColor = BrickColor.new( "Bright yellow" ) |
08 | elseif StageLights.BackLeftSpotlight.SpotLight.Brightness = = 1 then |
09 | StageLights.BackLeftSpotlight.SpotLight.Brightness = 0.2 |
10 | script.Parent.BrickColor = BrickColor.new( "Bronze" ) |
11 | end |
12 | end |
13 |
14 | ClickDetector.MouseClick:connect(LightSwitch) |
When I test the game and click on the button (which turns the light on and off), it will change color, but only on my first click. Any more clicks won't change the color again. Anyone know what I'm doing wrong? Thanks in advance.
This is not your fault, this is Roblox's fault. Your code is correct, it is just that Roblox has rounding errors. You can see this error in action when you print the Brightness when it is changed to 0.2. It will print something like 0.20000623. To fix this just edit your code to the following:
01 | local ClickDetector = script.Parent.ClickDetector |
02 | local StageLights = script.Parent.Parent.Parent.Parent.StageLights |
03 |
04 | function LightSwitch() |
05 | if math.floor(StageLights.BackLeftSpotlight.SpotLight.Brightness* 10 )/ 10 = = 0.2 then |
06 | StageLights.BackLeftSpotlight.SpotLight.Brightness = 1 |
07 | script.Parent.BrickColor = BrickColor.new( "Bright yellow" ) |
08 | elseif StageLights.BackLeftSpotlight.SpotLight.Brightness = = 1 then |
09 | StageLights.BackLeftSpotlight.SpotLight.Brightness = 0.2 |
10 | script.Parent.BrickColor = BrickColor.new( "Bronze" ) |
11 | end |
12 | end |
13 |
14 | ClickDetector.MouseClick:connect(LightSwitch) |
What this is doing is multiplying the brightness by 10 to make it about 2, rounding it down to make it equal 2, then dividing it by ten to make it equal 0.2.