Scripting Helpers is winding down operations and is now read-only. More info→
Ad
Log in to vote
0

How to change color continuously? [UNANSWERED]

Asked by 9 years ago

I am trying to make a script where the color of the brick changes continuously no matter what happens. And when the color reaches white (R/255, G/255, B/255) it will start going down in colors. Here is a script,

local script = script.Parent

while true do
    script.BrickColor = BrickColor3.new(R/+1, G/+1, B/+1) -- don't know what to put here...
    if script.BrickColor = R/255, G/255, B/255 then
        for i = 1, 255 do
            script.BrickColor = BrickColor3.new(R/-1, G/-1, B/-1)
        end
    end
end

2 answers

Log in to vote
-1
Answered by
BlueTaslem 18071 Moderation Voter Administrator Community Moderator Super Administrator
9 years ago

Structure

There's a much simpler structure:

  • Go up from 0 to 255

  • Go down from 255 to 0

  • (Repeat)

Here's what that would look like:

while true do
    for bright = 0, 1, 0.03 do
        -- Set color...
        wait()
    end
    for bright = 1, 0, -0.03 do
        -- Set color...
        wait()
    end
end

Setting BrickColor

The BrickColor.new constructor can take a Color3 value. Color3 values use an R, G, and B ranging from 0 to 1 (not 0 to 255 as is reported by the Properties tab). So this could look like

local brick = script.Parent -- DO NOT REDEFINE SCRIPT
-- That is a wonderful way to confuse yourself

...
        brick.BrickColor = BrickColor.new( Color3.new( bright, bright, bright ) )
...

Not Using BrickColor? (Getting it continuous)

So, this will more or less work. The problem is that BrickColors are ultimately discrete. There are only a handful of them, it won't actually be a smooth transition.

There isn't a simple solution to this.

At this point, there are two solutions.

SpecialMesh: The trick I came up with a number of years ago. Using a FileMesh, you can modify the VertexColor property (which is a Vector3, not a Color3) when it has a pure white texture to get the mesh to be that color.

I had MeshDB upload this brick mesh that is 0.5x0.5x0.5. Set its Scale to be twice the size of the brick, e.g.,

brick.Mesh.Scale = brick.Size * 2

Then set its VertexColor:

...
        brick.Mesh.VertexColor = Vector3.new( bright, bright, bright )
...

(Remember it needs a pure white TextureId -- upload one yourself or just search "White" on decals)


GUIs: The other option is to use 6 different SurfaceGuis. This requires more instances, and will ignore lighting.

Ad
Log in to vote
-1
Answered by
Redbullusa 1580 Moderation Voter
9 years ago

Color3 values can range from 0 to 1. You can find your colors by dividing the values you want by 255.

You can combine BrickColor and Color3 constructors into one:

game.Workspace.Part.BrickColor = BrickColor.new(Color3.new(1,1,1))

At least, that's what Wiki said.

Another way you can change colors continuously is to try:

game.Workspace.Part.BrickColor = BrickColor.Random()

Don't forget to use wait(--[[WaitTime]])in your while loop, lol.

Answer this question