I'm having an issue with rotation a model in my script
function rotateMod(Mod,center,rotation)
local parts ={}
local function scan(parent)
for _,obj in pairs(parent:GetChildren()) do
if (obj:IsA("BasePart")) then
table.insert(parts,obj)
end
scan(obj)
end
end
scan(Mod)
for _,part in pairs(parts) do
part.CFrame = (center*rotation*(center:inverse()*part.CFrame))
end
end
Mouse = game.Players.LocalPlayer:GetMouse()
Mouse.KeyDown:connect(function(key)
if selected == true and key == "r" then
Rot = Rot + 90
if Rotation == Vector3.new(0,0,0) then Rotation = Vector3.new(0,90,0)
rotateMod(p,p:GetModelCFrame(),CFrame.new(0,90,0))
elseif Rotation == Vector3.new(0,90,0) then Rotation = Vector3.new(-180,0,-180)
rotateMod(p,p:GetModelCFrame(),CFrame.new(-180,0,-180))
elseif Rotation == Vector3.new(-180,0,-180) then Rotation = Vector3.new(0,-90,0)
rotateMod(p,p:GetModelCFrame(),CFrame.new(0,-90,0))
elseif Rotation == Vector3.new(0,-90,0) then Rotation = Vector3.new(0,0,0)
rotateMod(p,p:GetModelCFrame(),CFrame.new(0,0,0)) end
s.Rotation = Rotation
end
end)
I've tried everything I can think of and the rotations never turn correctly. I think its a numerical flaw that I can't figure out. Any help is appreciated.
