How to achieve sliding image effect for ScreenGUIs

You can write your topic however you want, but you need to answer these questions:

  1. What do you want to achieve? Keep it simple and clear!
    Hello! Recently I’ve been wanting to make something like the following using GUIs instead of Beams:

I’ve tried to replicate this same “sliding” effect for images with a ScreenGUI, but I don’t know enough when it comes to this specific subject to come up with my own method of doing this.

I’ve tried using a viewport frame with a beam in it, but I later learned that viewport frames only display 3D objects.

Is there any way I can make this?

3 Likes

I think this will sound dumb, but could you try to use a video instead?
Or you can use some parts and try to achieve that effect in 3D

2 Likes

I can’t use a video because I’m trying to use a custom pattern specifically - the triangles are just a placeholder. I also can’t afford to upload a video.
I could however, try this second option. Thanks!

3 Likes

You mean something like this?

3 Likes

Yep! I’ve already found out how to make this with the help of Tweens, but i’m still having a couple of issues.

2 Likes

Could you possibly list the issues because I may be able to help.

3 Likes


As of right now, I can only provide a static image, but I can give you the specifications.
I used an ImageLabel, with a size of {2,0}{2,0}. It slides diagonally using the built-in tween functions for GUIs, and to achieve a “seamless” effect, I used a tile size of {0.25,0}{0.5,0}.

The only problem I have is that sometimes, the screen stops sliding and just freezes for a duration of ten seconds, after which it continues to slide normally. This happens randomly, and I haven’t the slightest clue why.

Here’s the LocalScript I used:

local function ScreenSlide()
	ScreenA:TweenPosition(UDim2.new(-1,0,0,0),"Out","Linear",10,false)
end

while true do
	ScreenA.Position = UDim2.new(0, 0,-1, 0)
	ScreenSlide()
	wait(10)
	ScreenA.Position = UDim2.new(0,0,-1,0)
end
2 Likes

Exactly what I have done. Good job.

3 Likes

maybe remove the “ScreenA.Position = UDim2.new(0,0,-1,0)” at the bottom? idk why wrote it twice knowing it’s gonna loop from the top again. and maybe try to turn the wait(10) into wait(10.1) or wait10.5).
and if that doesn’t work, try task.wait(10)

my way of bug fixing is to just spend hours messing around with the script and see what works. Good luck!

1 Like

I’ll try this and keep you all updated on what happens

1 Like