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

Object isn't rotating when I'm trying to move it?

I've made a door that moves up and down, but the door itself turns 90 degrees when it starts moving. So I tried to add a way to keep the object at the same rotation as it moves down and up but I'm not doing something right?

door = script.Parent.Door
debounce = false
open = true --Door open or not open


script.Parent.DoorToggle.Event:connect(function() --This is a bindable function which is fired from another script
	if not debounce then
		debounce = true
		if open then
			for i=10,180 do
				door.CFrame = CFrame.new(door.Position + Vector3.new(0,-0.1,0))
				door.Rotation = CFrame.Angles(0,90,0) --Something is wrong here
				wait()
			end
			open = false
		elseif not open then
			for i=10,180 do
				door.CFrame = CFrame.new(door.Position + Vector3.new(0,0.1,0))
				door.Rotation = CFrame.Angles(0,90,0) --Something is wrong here too
				wait()
			end
			open = true
		end
		debounce = false
	end
end)

I've only recently started learning CFraming.

1 answer

✓ Accepted answer

You can't set an object's Rotation property to a CFrame, the Rotation property is of type Vector3.

What you want to do is combine two CFrames together using the multiplication * operator and assign it to your door's CFrame property.

-- Don't forget, CFrames expect the angles to be given in radians, not degrees!
door.CFrame = door.CFrame * CFrame.Angles(0, math.rad(90), 0)

All you need to remember is that you add vectors, but you multiply CFrames.

See BlueTaslem's answer here, for more details about vectors and CFrames.

1 comment

0

Thanks!

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