Roblox needs to fix this tweenservice bug, it's literally game breaking

So, I’ve been trying to fix this for about 2 weeks now, these people are on the forum are talking about how “Unanchoring” the rest of the parts, and keeping 1 part anchored acting as if it’s the “Root”… Then welding every single part that isn’t anchored to the root. This works- But; (Literally if the player minimizes the tab on roblox for some time) All of your other parts "besides the “Root” (aka the part you’ve anchored to move; the un-anchored parts) are going to be dislocated when the player minimized the tab, and comes back to the game, but the anchored part is fine it isn’t dislocated, but the parts that are unanchored are dislocated this is extremely frustrating, therefore if this bug gets fixed this “way” would be a lot more easier- If I had every part of the model anchored, and make it move that won’t happen.

Which btw if you still don’t know what’s happening basically when the player minimized the tab and comes back after some time the parts that are unanchored are just stuck, and after like 30 seconds they’re fine but I still find it messy how this occurs?

FYI: I’m using Welds.

Is their any other way to tween models anchored…?

Here’s my script:

local turntimer = 2.25
local spintimer = 3

local TweenService = game:GetService("TweenService")
local rotationInfo = TweenInfo.new(turntimer,Enum.EasingStyle.Linear,Enum.EasingDirection.InOut, 0, false, 0)
local rotationInfo2 = TweenInfo.new(spintimer,Enum.EasingStyle.Linear,Enum.EasingDirection.InOut, 0, false, 0)
local stageFunctions = script.Parent.Parent.Parent
local Face = stageFunctions.Face.PrimaryPart

local FacePos = stageFunctions.MainPos
local RFacePos = stageFunctions.RPos
local LFacePos = stageFunctions.LPos
local DarkPos = stageFunctions.DarkPos

--Start of the loop of everything dark, and no flamethrowers, or lights
while true do
    wait(5) ---stays still for 25 seconds
    
--End of start, of the loop of everything dark, and no flamethrowers, or lights

    
--Function, Forward/back mask pop out, left, forward/back, right---------------------------------------------------------------------------------------------------------
    stageFunctions.StageLightPack.Script.Disabled = false
    local movingFaceR = TweenService:Create(Face, rotationInfo, { CFrame = RFacePos.CFrame}) ---moves forward/turns right
    movingFaceR:Play()
    wait(turntimer)
    
    wait(8) --stays still 
    
    local movingDark = TweenService:Create(Face, rotationInfo, {CFrame = DarkPos.CFrame}) --moves dark
    movingDark:Play()
    wait(turntimer)
    
    wait(4)
    
    local movingFaceL = TweenService:Create(Face, rotationInfo, {CFrame = LFacePos.CFrame})    --moves back
    movingFaceL:Play()
    wait(turntimer)
    
    wait(8)
    
    local movingDark = TweenService:Create(Face, rotationInfo, {CFrame = DarkPos.CFrame}) --moves dark
    movingDark:Play()
    wait(turntimer)
    
    wait(4)
    
    local one80 = TweenService:Create(Face, rotationInfo2, {CFrame = FacePos.CFrame * CFrame.Angles(0, 0, math.rad(180))})
    one80:Play()
    wait(spintimer)
    local three60finish = TweenService:Create(Face, rotationInfo2, {CFrame = DarkPos.CFrame * CFrame.Angles(0, 0, math.rad(360))})
    three60finish:Play()
    wait(spintimer)

    wait(5)
    stageFunctions.StageLightPack.Script.Disabled = true
    for _, part in ipairs(stageFunctions.StageLightPack:GetDescendants()) do
    if part:IsA("SpotLight") then part.Enabled = false end
    end
end
--End of Function, Forward/back mask pop out, left, forward/back, right-----------------------------------------------------------------------------
    ```

Please fix this I just want this bug fixed that's it..
1 Like

the issue is probably because when the tab is minimized, network ownership is handled weirdly
I think maybe doing that makes the player having network ownership off the parts freeze the parts, then the server controlling the root continues moving the root

I’d try:

  • setting the network ownership to of those parts to be strictly the server,
  • having the parts only exist on clientside so they stay together; the server can have its own invisible copy so the client being out of sync doesnt delay things
1 Like

Is it possible to just tween the model anchored?

I would not recommend @4SHN suggestion at all, that will get very messy very quickly.

It is not currently possible to tween whole models (hopefully soon)
If you really don’t want to just weld the parts together i would make an invisible part that does the tween you want and use :SetPrimaryPartCFrame() to set the models position to the invisible parts position in a while loop, however i would still not recommend that but it is the next best easiest thing i can come up with at 1am lol

And if you do it that way all your parts can be anchored

Yes, I am aware of this method I’ve tried this method the problem is I don’t know how I’d do it? I’ve tried doing

	    CFrameValue.Value = model:GetPrimaryPartCFrame()
	 
	    CFrameValue:GetPropertyChangedSignal("Value"):Connect(function()
	        model:SetPrimaryPartCFrame(CFrameValue.Value)
	    end)

    local movingFaceR = TweenService:Create(CFrameValue, rotationInfo, { CFrame = Value = RFacePos.CFrame}) ---moves forward/turns right
    movingFaceR:Play()
    wait(turntimer)```

SetPrimaryPartCFrame has been superseded by PivotTo. PivotTo is also more performant than SetPrimaryPartCFrame.

Please provide an example with my script, I’ll very appreciate it.

I don’t know how I would do it with my script.

I’ve been trying to do it like this?

--- Configurations
local turntimer = 2.25
local spintimer = 3

local TweenService = game:GetService("TweenService")
local rotationInfo = TweenInfo.new(turntimer,Enum.EasingStyle.Linear,Enum.EasingDirection.InOut, 0, false, 0)
local rotationInfo2 = TweenInfo.new(spintimer,Enum.EasingStyle.Linear,Enum.EasingDirection.InOut, 0, false, 0)
local stageFunctions = script.Parent.Parent.Parent
local Face = stageFunctions.Face

local FacePos = stageFunctions.MainPos
local RFacePos = stageFunctions.RPos
local LFacePos = stageFunctions.LPos
local DarkPos = stageFunctions.DarkPos

--Start of the loop of everything dark, and no flamethrowers, or lights
while true do
	wait(5) ---stays still for 25 seconds
	
--End of start, of the loop of everything dark, and no flamethrowers, or lights

	
--Function, Forward/back mask pop out, left, forward/back, right---------------------------------------------------------------------------------------------------------
	stageFunctions.StageLightPack.Script.Disabled = false
	local movingFaceR = TweenService:Create(Face.PrimaryPart:PivotTo(), rotationInfo, { CFrame = RFacePos.CFrame}) ---moves forward/turns right
	movingFaceR:Play()
	wait(turntimer)
	
	wait(8) --stays still 
	
	local movingDark = TweenService:Create(Face.PrimaryPart:PivotTo(), rotationInfo, {CFrame = DarkPos.CFrame}) --moves dark
	movingDark:Play()
	wait(turntimer)
	
	wait(4)
	
	local movingFaceL = TweenService:Create(Face.PrimaryPart:PivotTo(), rotationInfo, {CFrame = LFacePos.CFrame})	--moves back
	movingFaceL:Play()
	wait(turntimer)
	
	wait(8)
	
	local movingDark = TweenService:Create(Face.PrimaryPart:PivotTo(), rotationInfo, {CFrame = DarkPos.CFrame}) --moves dark
	movingDark:Play()
	wait(turntimer)
	
	wait(4)
	
	local one80 = TweenService:Create(Face.PrimaryPart:PivotTo(), rotationInfo2, {CFrame = FacePos.CFrame * CFrame.Angles(0, 0, math.rad(180))})
	one80:Play()
	wait(spintimer)
	local three60finish = TweenService:Create(Face.PrimaryPart:PivotTo(), rotationInfo2, {CFrame = DarkPos.CFrame * CFrame.Angles(0, 0, math.rad(360))})
	three60finish:Play()
	wait(spintimer)

	wait(5)
	stageFunctions.StageLightPack.Script.Disabled = true
	for _, part in ipairs(stageFunctions.StageLightPack:GetDescendants()) do
	if part:IsA("SpotLight") then part.Enabled = false end
	end
end
--End of Function, Forward/back mask pop out, left, forward/back, right-----------------------------------------------------------------------------
	```

For the record, it is 2024 and Roblox has yet to fix this and many other desyncing bugs

1 Like