I am trying to make a complex sliding door in which various parts will retract a certain amount. However, the parts are not moving at all. This is my script:

local door = script.Parent

local y = door.l1.Position.Y
local z = door.l1.Position.Z
local oneleftorigin = door.l1.Position.X
local twoleftorigin = door.l2.Position.X
local threeleftorigin = door.l3.Position.X
local fourleftorigin = door.l4.Position.X
local fiveleftorigin = door.l5.Position.X
local sixleftorigin = door.l6.Position.X
local sevenleftorigin = door.l7.Position.X


local onerightorigin = door.r1.Position.X
local tworightorigin = door.r2.Position.X
local threerightorigin = door.r3.Position.X
local fourrightorigin = door.r4.Position.X
local fiverightorigin = door.r5.Position.X
local sixrightorigin = door.r6.Position.X
local sevenrightorigin = door.r7.Position.X

local goalone = 0.5
local goaltwo = 1.5
local goalthree = 3
local goalfour = 5.5
local goalfive = 9.5
local goalsix = 15
local goalseven = 22

local activated = 0

local oneleft = door.l1
local twoleft = door.l2
local threeleft = door.l3
local fourleft = door.l4
local fiveleft = door.l5
local sixleft = door.l6
local sevenleft = door.l7


local oneright = door.r1
local tworight = door.r2
local threeright = door.r3
local fourright = door.r4
local fiveright = door.r5
local sixright = door.r6
local sevenright = door.r7


function opendoor()
	print("opening door")
	while not oneleft.Position.X == (oneleftorigin + goalone) do
		oneleft.CFrame = CFrame.new((oneleft.Position.X+0.1), y, z)
		oneright.CFrame = CFrame.new((oneright.Position.X-0.1), y, z)
		wait(0.1)
	end
	while not twoleft.Position.X == (twoleftorigin + goaltwo) do
		twoleft.CFrame = CFrame.new((twoleft.Position.X+0.1), y, z)
		tworight.CFrame = CFrame.new((tworight.Position.X-0.1), y, z)
		wait(0.1)
	end
	while not threeleft.Position.X == (threeleftorigin + goalthree) do
		threeleft.CFrame = CFrame.new((threeleft.Position.X+0.1), y, z)
		threeright.CFrame = CFrame.new((threeright.Position.X-0.1), y, z)
		wait(0.1)
	end
	while not fourleft.Position.X == (fourleftorigin + goalfour) do
		fourleft.CFrame = CFrame.new((fourleft.Position.X+0.1), y, z)
		fourright.CFrame = CFrame.new((fourright.Position.X-0.1), y, z)
		wait(0.1)
	end
	while not fiveleft.Position.X == (fiveleftorigin + goalfive) do
		fiveleft.CFrame = CFrame.new((fiveleft.Position.X+0.1), y, z)
		fiveright.CFrame = CFrame.new((fiveright.Position.X-0.1), y, z)
		wait(0.1)
	end
	while not sixleft.Position.X == (sixleftorigin + goalsix) do
		sixleft.CFrame = CFrame.new((sixleft.Position.X+0.1), y, z)
		sixright.CFrame = CFrame.new((sixright.Position.X-0.1), y, z)
		wait(0.1)
	end
	while not sevenleft.Position.X == (sevenleftorigin + goalseven) do
		sevenleft.CFrame = CFrame.new((sevenleft.Position.X+0.1), y, z)
		sevenright.CFrame = CFrame.new((sevenright.Position.X-0.1), y, z)
		wait(0.1)
	end
	wait(4)
	while not oneleft.Position.X == (oneleftorigin) do
		oneleft.CFrame = CFrame.new((oneleft.Position.X-0.1), y, z)
		oneright.CFrame = CFrame.new((oneright.Position.X+0.1), y, z)
		wait(0.1)
	end
	while not twoleft.Position.X == (twoleftorigin) do
		twoleft.CFrame = CFrame.new((twoleft.Position.X-0.1), y, z)
		tworight.CFrame = CFrame.new((tworight.Position.X+0.1), y, z)
		wait(0.1)
	end
	while not threeleft.Position.X == (threeleftorigin) do
		threeleft.CFrame = CFrame.new((threeleft.Position.X-0.1), y, z)
		threeright.CFrame = CFrame.new((threeright.Position.X+0.1), y, z)
		wait(0.1)
	end
	while not fourleft.Position.X == (fourleftorigin) do
		fourleft.CFrame = CFrame.new((fourleft.Position.X-0.1), y, z)
		fourright.CFrame = CFrame.new((fourright.Position.X+0.1), y, z)
		wait(0.1)
	end
	while not fiveleft.Position.X == (fiveleftorigin) do
		fiveleft.CFrame = CFrame.new((fiveleft.Position.X-0.1), y, z)
		fiveright.CFrame = CFrame.new((fiveright.Position.X+0.1), y, z)
		wait(0.1)
	end
	while not sixleft.Position.X == (sixleftorigin) do
		sixleft.CFrame = CFrame.new((sixleft.Position.X-0.1), y, z)
		sixright.CFrame = CFrame.new((sixright.Position.X+0.1), y, z)
		wait(0.1)
	end
	while not sevenleft.Position.X == (sevenleftorigin) do
		sevenleft.CFrame = CFrame.new((sevenleft.Position.X-0.1), y, z)
		sevenright.CFrame = CFrame.new((sevenright.Position.X+0.1), y, z)
		wait(0.1)
	end
	activated = 0
end

door.Trigger.Touched:Connect(function(part)
	print("activated")
	if activated == 0 and part.Parent.Humanoid then
		print("opening")
		activated = 1
		opendoor()
	end
end)

No error messages are returned, and all the print() functions at various points in the system are firing, so all the functions should be firing. I am assuming that either the while loops aren't being skipped, or the CFrame.new() lines are not changing the position of the parts, but I am not sure why this would be. Any help would be appreciated.

2 comments

0

what are you trying to accomplish?

0

i am trying to move the parts back a certain amount to make an opening door