Rotate Part on Y axis when it's already rotated on X axis

I have a wind-blade style attack that rotates while moving forward, and looks like this:

https://gyazo.com/6422b08074c7662d78643b720cd5917e

I rotate the part by tweening its orientation to its current orientation + 179 degrees more on the Y axis repeatedly, like this:

--v is the wind blade part
while wait(0.3) do
	local Goal = {}
	Goal.Orientation = v.Orientation + Vector3.new(0, 179, 0)
	local Info = TweenInfo.new(0.3, Enum.EasingStyle.Linear)
	local Tween = TweenService:Create(v, Info, Goal)
	Tween:Play()
end

When I try to move the wind blade using the same method after the wind blade has already been rotated on a different axis though, it looks wonky:

https://gyazo.com/efbc4886c91ae8a978adc26cc1f73bb2

Things I’ve tried:

  • Using CFrame.Angles to make a properly rotated CFrame and then converting it to orientation using :ToOrientation() to rotate the effect instead
  • Subtracting the new orientation of the effect (after doing 1 tween) by the old orientation of the effect (before doing any tweens) and then tweening the orientation to its old orientation + this difference repeatedly
    • Rotates like its following the edge of an unproperly opened soup can

Notice: I move the effect forward by tweening its CFrame forward, so I can’t directly rotate the effect using CFrame, as it would get cancelled by the tween that moves it forward.

1 Like

hey did you figure it out? I have the same roblem

His tween was overwrighting his CFrame rotation … do the rotation in the tween with the move. Or do the whole thing with all CFrames.

I just thought of this right now: Try using the “subtracting the new orientation of the effect after doing 1 tween” solution I mentioned in the “Things I’ve tried” section, but use the linear easing style instead of the sine easing style in the tween. I think sine may have caused the uneven rotation I mentioned before.