Log in to vote

Changing a parts CFrame on the Y Axis?

Asked by 1 year ago

Hey I've asked a lot of questions on CFrame but this answer isn't turning up on the internet. So I have a part that I want to rotate on the global Y axis, not its Euler Angles Y axis or basically, no matter what rotations it x and z axis are at it will turn falt on its Y axis, this is my current script but code but if its x or z are rotated it rotates on an axis that is the y axis of the part rotated. Not sure if this makes sense or not? and there are no errors ~~~~~~~~~~~~~~~~ part = script.Parent while wait() do part.CFrame = part.CFrame * CFrame.Angles(0,1,0) end ~~~~~~~~~~~~~~~~~ This works but if i rotate the part on its x axis it doesnt rotate flat on the y axis How would I do this?

1 answer

Log in to vote
Answered by 1 year ago
Edited 1 year ago

OK, this works for me. This will create a pre-rotated part and continuously rotate it 10 degrees about the world Y axis once every 1/30th of a second.

local part ="Part")
part.Anchored = true
part.Size =, 1, 15)
part.Position =, 11, -11)
part.Rotation =, 45, 0)
part.Parent = workspace

while wait() do
    -- Take the position out of the current CFrame to leave only its rotation
    local currentWorldAxisRotation = part.CFrame - part.Position

    -- Get an rotation matrix for the desired rotation
    local additionalWorldAxisRotation = CFrame.Angles(0,math.rad(10),0)

    -- Apply the rotation to the part's current position and rotation. additionalWorldAxisRotation MUST be multiplied first
    part.CFrame = * additionalWorldAxisRotation * currentWorldAxisRotation
Ive tried this but it changes it on all three axises in a twisty way Wafflecow321 121 — 1y
Oh nvr mind yah this works thanks. Wafflecow321 121 — 1y

Answer this question