How can I make Particles in GUI?

Hello! I was wondering how I can make particles in GUI like this > 2022-02-18 23-54-55

I want to make particles show for my Egg System, but I am not sure how. How can I do this?
Any help will be appreciated!

Any help will be greatly appreciated!

you would create 40 frames, pick a random colour, random size. Positioning would be more complex because the frames would not move on a straight line but rather a curve.

Well, I am more talking about the shine that is does in the Video.

The shine? You mean like the flash before the outcome is revealed?

1 Like


That shine.

I think they have a ui for the shine. I would create my shine ui, maybe rotate it randomly and position it
at the viewport’s on screen position.

1 Like

If you watch the video, I am pretty sure they don’t use that?

Ah. They went all out with this shine effect. They have separate UIs which they randomly position(I think) and change the size of.

I don’t know how they did it to be honest with you. Someone else could help you with that

1 Like

@Annexsohn I have made a local script which trys to recreate the effects you wanted. Sorry if the code is messy

local maxBeam = 25

local ran = Random.new()

function createBeam()
	local clone = script.Parent.Parent.beamTemplate:Clone()
	clone.Name = "beam"
	
	local xScale = ran:NextNumber(0.3,0.7)--[[
											Might have to play around with these numbers			]]
	local yScale = ran:NextNumber(0.1,0.9)
	
	local VPSize = game.Workspace.Camera.ViewportSize
	
	local framePos = Vector2.new(VPSize.X * script.Parent.Position.X.Scale,VPSize.Y * script.Parent.Position.Y.Scale)
	
	clone.Parent = script.Parent--parent the beam
	
	clone.Position = UDim2.new(xScale,0,yScale,0)--Position the beam
	
	

	local clonePos = Vector2.new(VPSize.X * xScale, VPSize.Y * yScale)
	
	clone.Size = UDim2.new(0,(clonePos - framePos).Magnitude * 2,ran:NextNumber(0.25,0.3),0)--resize the beam

	local opposite = framePos.Y - clonePos.Y
		
	local adjacent = framePos.X - clonePos.X
	
	local angle = math.atan(opposite/adjacent)
	
	local convertedAngle = ((angle)*(180/math.pi))
	clone.Rotation = convertedAngle--Calculate the rotation
	clone.Visible = true
	
	--Tweening the size of the beam
	
	local oriX = clone.Size.X.Offset
	
	local oriY = clone.Size.Y.Scale
	
	-- You can play around with these numbers
	local ransizeX = ran:NextNumber(150,250) + oriX--Calculate a random X size
	local ransizeY = ran:NextNumber(25,100) + oriY--Calculate a random Y size
	
	local ts = game:GetService("TweenService")
	local tween = ts:Create(clone,TweenInfo.new(1,
		Enum.EasingStyle.Bounce,--You can change the Enum.EasingStyle 
		Enum.EasingDirection.Out,
		-1,
		true,
		0),
		{Size = UDim2.new(0,ransizeX,0,ransizeY)})
	
	tween:Play()-- Play the tween
end

for i = 1, maxBeam do
	createBeam()--call the function 10 times
end


--Rotating the UI
	game:GetService("RunService").RenderStepped:Connect(function()
		script.Parent.Rotation += 0.3
	end)


image
The frame named pet would be the picture of the pet.
The beamTemplate is the template used to create the beams
The localscript would be inside the frame named pet

2 Likes

I’m not sure, but based on the bloom and ambient occlusion, which both are not possible just by using ScreenGuis, they probably projected the beam in 3D, along with the models too. So, the shine effect might just be a ParticleEmitter?