Scripting HelpersARCHIVE
A little piece of Roblox history. Preserved for everyone, one question at a time.Read about the archive →
✓ ANSWER ACCEPTED

How do I anchor one side in rotation? (edited)

script:

local door = script.Parent

--position before moving = 61.595, 3.5, -123.086
--position after moving = 65.779, 3.5, -121.335
--rotation before moving = 0, 0, 0
--rotation after moving = 180, 50, 180
--have no clue what im doing rn v

function doormove(onClick)
	for x = 61.595, 65.779, .4 do
	for z = -123.086, -121.335, .2 do
	workspace.Model:SetPrimaryPartCFrame(CFrame.new(x, 0, z))
	for h = 0, 180, 20 do
	for e = 0, 50, 5 do
	for y = 0, 180, 20 do
	workspace.Model:SetPrimaryPartCFrame(CFrame.Angles(h, e, y))
	end
	end
	end
	end
	end
end

script.Parent.ClickDetector.MouseClick:connect(doormove)

when i click it lags the server and it disappears

i want it to swing open like a normal door but when i click it just disappears. i used to have just one brick and the center would swing, but the primary part of the model is on the side of the door as the center for the moving.

1 answer

✓ Accepted answer

The problem probably lies in this part of your code:

workspace.Model:SetPrimaryPartCFrame(CFrame.new(x, 0, z))

What you're doing is setting the Y position to 0, so depending on the height of the door and ground, it might be below the ground.

To fix this, I suggest changing it to this:

workspace.Model:SetPrimaryPartCFrame(CFrame.new(x, 3.5, z))

I'm assuming the comments are giving the correct Y position. Also, I would suggest adding a wait() after the rotational for loops, so you can actually see the door open:

local door = script.Parent

--position before moving = 61.595, 3.5, -123.086
--position after moving = 65.779, 3.5, -121.335
--rotation before moving = 0, 0, 0
--rotation after moving = 180, 50, 180
--have no clue what im doing rn v

function doormove(onClick)
    for x = 61.595, 65.779, .4 do
    	for z = -123.086, -121.335, .2 do
    		door:SetPrimaryPartCFrame(CFrame.new(x, 3.5, z))
    		for h = 0, 180, 20 do
    			for e = 0, 50, 5 do
    				for y = 0, 180, 20 do
    					door:SetPrimaryPartCFrame(CFrame.Angles(h, e, y))
    				end
   			end
    		end
    		wait(0.1) -- Change to adjust speed.
	end
    end
end

script.Parent.ClickDetector.MouseClick:connect(doormove)

Finally, I noticed that you put the ClickDetector in a Model. I don't think this works; you should put it in a part and update the last line accordingly. I also noticed you used workspace.Model. This will make the script break if you change the door's parent or rename it. I fixed that in the code above.

The indentation didn't come out very well, I noticed. But you should always indent your code; it increases readability and makes it easier to spot errors related to end statements.

This discussion is preserved as it was. New answers, comments, and votes are closed.