How to Spin a Meshpart while moving

This is probably A very Dumb question, So i am, I know this topic has been made many times before, but i just couldn’t find a Simple solution for my specific needs, So, i am looking for help on how to make this thing, make a MeshPart spin while moving it, Basically i have a tween animation where i resize this Meshpart to a size, and also set the cframe so it doesn’t look weird, but I can’t find a way to make it spin, this would also leads to another question, after this it’s done , how would i move it even more, to a specific position, Because if i do Vector3.new() or CFrame.new() the other changes will override it, So yeah… Never was too good in mathss

Code :

task.wait(0.1)
local tweenS = game:GetService("TweenService")
local rep = game:GetService("ReplicatedStorage")
local remotesfolder = rep:WaitForChild("Remotes", 7)
local fumocirno = workspace:WaitForChild("CirnoFumo", 7)
local tweenRemote = remotesfolder:WaitForChild("Tween")
local setPropertyRemote = remotesfolder:WaitForChild("SetClientProperty")


local Y_INCREMENT2 = 1.4
local X_INCREMENT2 = 0
local Z_INCREMENT2 = 0

local TweenInfos = {
	cirnofumoFade = {TweenInfo.new(
		0.5,
		Enum.EasingStyle.Sine,
		Enum.EasingDirection.InOut, 
		0, 
		false,
		0
		)},
	doorInfoClose = {TweenInfo.new(
		0.1,
		Enum.EasingStyle.Sine,
		Enum.EasingDirection.InOut, 
		0, 
		false,
		0
		)}
}
local goals = {
	cirnoSize = {
		Size = fumocirno.Size + Vector3.new(X_INCREMENT2, Y_INCREMENT2, Z_INCREMENT2),
		CFrame = fumocirno.CFrame * CFrame.new(0, Y_INCREMENT2/2, 0)
	},
	cirnoSpin = {
		Orientation = fumocirno.Orientation + Vector3.new(0, 360, 0) -- didn't work
	}
}


task.wait(5.5)

local fumoanim = coroutine.create(function()
	local Y_INCREMENT = -3.85
	local X_INCREMENT = 0
	local Z_INCREMENT = 0

	task.spawn(function()
		while true do

			setPropertyRemote:FireAllClients(fumocirno, 
				{
					Size = fumocirno.Size + Vector3.new(X_INCREMENT, Y_INCREMENT, Z_INCREMENT),
					CFrame = fumocirno.CFrame * CFrame.new(0, Y_INCREMENT/2, 0)
				}
			)
			
			
			tweenRemote:FireAllClients(fumocirno, TweenInfos["cirnofumoFade"], goals["cirnoSize"])

			task.wait(0.55)
		end
	end)
end)

coroutine.resume(fumoanim)


You would have to tween it by 180 or 120 degrees at a time because if u give it a goal of 360 it’ll just tween to the shortest path to 360 (like animations do)

Ex:

local tween = tweenservice:Create(cirno, 1, {cirno.CFrame * CFrame.Angles(0,math.rad(180),0)

local tween2 = tweenservice:Create(cirno, 1, {cirno.CFrame * CFrame.Angles(0,math.rad(360),0)
tween.Completed:Connect(function() tween2:Play() end
tween2.Completed:Connect(function() tween:Play() end 

Check for errors cuz I wrote this on phone

1 Like

Yeah i Already tried this but sadly, these lines will override that

setPropertyRemote:FireAllClients(fumocirno, 
				{
					Size = fumocirno.Size + Vector3.new(X_INCREMENT, Y_INCREMENT, Z_INCREMENT),
					CFrame = fumocirno.CFrame * CFrame.new(0, Y_INCREMENT/2, 0)
				}
			)
			
			
			tweenRemote:FireAllClients(fumocirno, TweenInfos["cirnofumoFade"], goals["cirnoSize"])

I am stuck… sad face, but hey, thanks anyways!

1 Like