I have a gate script that moves it up and down, but it seems to set the orientation back to 0,0,0 instead of 0,90,0. Any help? Here is the Server Script:
local TweenService = game:GetService("TweenService") local door1 = script.Parent.Parent.Parent.Part1 local tweeningInformation = TweenInfo.new( 2, Enum.EasingStyle.Linear, Enum.EasingDirection.Out, 0, false, 0 ) local door1Open = {CFrame = CFrame.new(-161.498, 15.143, -125.72)} local door1Close = {CFrame = CFrame.new(-161.498, 5.666, -125.72)} local tween1open = TweenService:Create(door1,tweeningInformation,door1Open) local tween1close = TweenService:Create(door1,tweeningInformation,door1Close) local open = false script.Parent.ClickDetector.MouseClick:Connect(function() if not open then open = true tween1open:Play() else tween1close:Play() open = false end end)
This should work since your rotation matrix starts out with zeros:
I tested it out with two parts applying the rotation of the oldPart to the newPart, but idea's still the same.
newPart = game.Workspace.newPart --part you want to apply the rotation to oldPart = game.Workspace.oldRotatedPart --Part you want to keep the rotation of rotation = (oldPart.CFrame - oldPart.CFrame.p) -- subtract position to get the rotation newPart.CFrame = newPart.CFrame * rotation --apply rotation to part you want to be rotated