How can I recreate this?

Hello,

I tried recreating the effects from the video below:


game: AUT

However, I couldn’t figure out how to time the Particles, Scaling and the ground ripple effect.

I would really like to know how to at least make parts scale up depending on the song and how to make the screen shake depending on the beat.

Any help is appreciated!

1 Like

I would have done it 1 by 1 or probably cloning random balls to random position and resizing them randomly. I would hard code by the ground animation by hand because i have no idea how it works

Check for Sound.PlaybackLoudness
It might help you making these blocks increasing and decrasing depending on sounds loudness

local part = script.Parent
local sound = workspace.Song
local firstSize = part.Size
sound:Play()
game:GetService("RunService").Heartbeat:Connect(function(dt)
    part.Size = Vector3.new(part.Size.X, firstSize.Y * sound.PlaybackLoudness, part.Size.Z)
end)

this script will basically make the parts size keep increase and decrease by sound.PlaybackLoudness
Also sound.PlaybackLoudness can go up to 1000 so it is recommended to divide it then multiply it to parts size. (It’ll be too big if you wont divide)

1 Like

Thank you, it worked!

Though, how can I make the part scale itself from the bottom to the top instead of the middle?

local part = script.Parent
local partOrigin = part.Position
local sound = workspace.Song
local firstSize = part.Size
sound:Play()
game:GetService("RunService").Heartbeat:Connect(function(dt)
    part.Size = Vector3.new(part.Size.X, firstSize.Y * sound.PlaybackLoudness, part.Size.Z)
    part.Position = partOrigin + Vector3.new(0, part.Size.Y/2, 0)
end)

this code should work.

code explainations
partOrigin : the position of part when position of it wasn’t changed

part.Position = partOrigin + Vector3.new(0, part.Size.Y/2, 0)

this line of code makes part’s position changed by part’s Y size( which is playbackLoudness thingy) and keeps bottom of the part stay at almost same position.

1 Like

Thank you so much!

Everything works, I figured that I can just time the ripple and other effects manually, I have one last question:

What should I divide the PlaybackLoudness by to keep the FieldOfView near 70~80?

This is what I currently have:

local Camera = game.Workspace.CurrentCamera
local Sound = game.Workspace:WaitForChild("Part").Sound

while wait(.01) and sound.Playing do
	game:GetService("RunService").Heartbeat:Connect(function(dt)
		Camera.FieldOfView = Sound.PlaybackLoudness
	end)	
end

(located in StarterPlayerScripts)

you can divide by 100, so the max loudness will add 10 FOV into your camera fov and the max fov will be 80

-- local script --
local cam = workspace.CurrentCamera
local defaultFOV = cam.FieldOfView
local sound = workspace.Song
if not sound.IsPlaying then
    sound:Play()
end
game:GetService('RunService').RenderStepped:Connect(function(dt)
    cam.FieldOfView = defaultFOV + sound.PlaybackLoudness / 100
end)

that should work

1 Like

It works!

I can handle everything else, thank you for your help!

1 Like

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.