when i weld an Gun without any unions to "Blue", it works properly. https://gyazo.com/193874fb51578c4f15e1571ec65188ee

when i weld an Gun with unions to "Blue", "Green" moves, but blue / gun stays in place. https://gyazo.com/d5ecd46e1bdbe5b00220cc25db7ff826 How do i fix this? Whats wrong with my script? Am i welding unions incorrectly?

 
 
local LocalPlayer = game.Players.LocalPlayer
local Character = LocalPlayer.Character or LocalPlayer.CharacterAdded:wait()
local Mouse = LocalPlayer:GetMouse()
local Head = Character:WaitForChild("Head")
 
local Gun = game.ReplicatedStorage.tool:Clone()   ----Clone the tool from replicated storage.
 
 
-----create green part
local Green = Instance.new("Part")
Green.Parent = game.Workspace
Green.Material = "SmoothPlastic"
Green.Name = "Green"
Green.Shape = Enum.PartType.Block
Green.CanCollide = false
Green.BrickColor = BrickColor.new("Bright green")
Green.Transparency = 0.5
Green.Size = Vector3.new(0.6, 0.6, 0.6)
Green.TopSurface = Enum.SurfaceType.Smooth
Green.BottomSurface = Enum.SurfaceType.Smooth
 
--- weld the green part to the head.
local Weld = Instance.new("Weld", Green)
Weld.Name = "Blue to Green"
Weld.Part0 = Head
Weld.Part1 = Green
Weld.C0 = CFrame.new(0,0,0)
Weld.C1 = CFrame.new(0,0,0)
 
--- create blue part
local Blue = Instance.new("Part")
Blue.Parent = game.Workspace.Green
Blue.Material = "SmoothPlastic"
Blue.Name = "Blue"
Blue.Shape = Enum.PartType.Block
Blue.CanCollide = false
Blue.BrickColor = BrickColor.new("Really blue")
Blue.Transparency = 0.5
Blue.Size = Vector3.new(0.5, 0.5, 0.5)
Blue.TopSurface = Enum.SurfaceType.Smooth
Blue.BottomSurface = Enum.SurfaceType.Smooth
 
 
--- weld the blue part to the green part
local Weld1 = Instance.new("Weld", Blue)
Weld1.Name = "Blue to Green"
Weld1.Part0 = Green
Weld1.Part1 = Blue
Weld1.C0 = CFrame.new(0,0,0)
 
 
Gun.Parent = game.Workspace.Green ---put the Gun into the green part

---- weld the gun to blue part
local Weld2 = Instance.new("Weld", Gun)
Weld2.Name = "Blue to Green"
Weld2.Part0 = Blue
Weld2.Part1 = Gun
Weld2.C1 = CFrame.new(0,0,0)
 
--place Green part in front of the camera.
game:GetService("RunService").RenderStepped:connect(function() 
    game.Workspace.Green.CFrame =  game.Workspace.Camera.CFrame * CFrame.new(0,0,-7)
end)
 
 
------------the animations
local ScopeIn = {
    Blue.CFrame * CFrame.new(0,0,0),
    Blue.CFrame * CFrame.new(1,-1,-4)
}
local ScopeOut = {
    Blue.CFrame * CFrame.new(0,0,0)
}
local Target = ScopeIn[1]
 
function Animation1()
        print("animationplayerd")
        for i,v in pairs(ScopeIn) do
            Target = ScopeIn[i]
            wait(0.01)
        end
       
end
function Animation2()
        for i,v in pairs(ScopeOut) do
            Target = ScopeOut[i]
            wait(0.01)
        end
end
Mouse.Button2Down:connect(function()
    Animation1()
end)
Mouse.Button2Up:connect(function()
    Animation2()
end)
local Speed = 0.3
 
--- constantly lerp the blue part to the target CFrame.
game:GetService("RunService").RenderStepped:connect(function()
    Weld1.C0 = Weld1.C0:lerp(Target,Speed)
end)

thanks for your help.