I had a few people ask me to go more in-depth on how to make a simple sine wave.
This might seem really easy to some people, but simple things like this make it fun to learn programming. Learning by doing is the best form of learning.
I’ve written this code with the beginner in mind. As such, I’ve kept everything as easy to understand as possible. I don’t delve too much into tables, or even pairs
/ipairs
. This code isn’t meant to be computationally efficient, just easy to read and understand.
-- Create a folder to store all our parts
PartsFolder = Instance.new("Folder")
-- Place the folder inside workspace (see Explorer View window)
PartsFolder.Parent = workspace
-- Creating parts using a "for loop"
for loopNumber=1,10 do
Part = Instance.new("Part") -- Create a Part
Part.Name = loopNumber.."Part" -- Set the name property
Part.Anchored = true -- Anchor the part
Part.Size = Vector3.new(1,1,1) -- Set the Part's size
Part.Position = Vector3.new(0,loopNumber,0) -- Position the part so they're all ontop of eachother
Part.Material = "Wood" -- Set the material
Part.Parent = PartsFolder -- Put the part inside the folder we created earlier
-- Set the color property to be random
-- (Try setting hue to a static number! Ex: hue = 70)
local hue = math.random(1,100)
Part.Color = Color3.fromHSV(hue/100, 0.5, 1)
end
-- Infinite loop
while true do
-- Make a delay so it'll pause about every 0.01 seconds (so we can see it and it won't crash)
wait(0.01)
-- get curret time in seconds
local currentTime = tick()
-- Another for loop
for loopNumber=1,10 do
-- Find the part inside the folder
local Part = PartsFolder:FindFirstChild(loopNumber.."Part")
-- Use sine opperator, with an offset of loopNumber
-- (Try multiplying loopNumber by something! Ex: X = math.sin(currentTime+loopNumber*2)
local X = math.sin(currentTime+loopNumber)
-- Set the position using this X value. Leave the other position values the same.
Part.Position = Vector3.new(X,Part.Position.Y,Part.Position.Z)
end
end
Click here to open Studio and see it in action.
UwU
hope this helps
Post any related questions below and I’ll try to respond to them.