Moving platform with tweenservice

I’m trying to make a moving platform with tweenservice that moves players who stand on it. I did this by tweening the bodyposition and bodygyro of the part. The problems I have are that the part always falls down due to gravity and (when I set workspace gravity to zero) the part goes much faster than it should the first time the tween plays. Here is my script:

 local mover = script.Parent

local BodyPosition = script.Parent.BodyPosition

local BodyGyro = script.Parent.BodyGyro

local TweenService = game:GetService("TweenService")

local tweenInfo = TweenInfo.new(

4,

Enum.EasingStyle.Sine,

Enum.EasingDirection.InOut,

-1,

true,

0

)

local Goals1 = {

Position = Vector3.new(mover.Position.X + 80, mover.Position.Y, mover.Position.Z)

}

local Goals2 = {

CFrame = CFrame.new(mover.Position.X + 80, mover.Position.Y, mover.Position.Z)

}

local tween1 = TweenService:Create(BodyPosition, tweenInfo, Goals1)

tween1:Play()

local tween2 = TweenService:Create(BodyGyro, tweenInfo, Goals2)

tween2:Play() 

Edit: I fixed the gravity issue by adding a BodyForce for the Y axis, but the thing still goes too fast the first time the tween plays.

Hmm Idk why it will go fast that’s weird

The part goes extra fast for the first half of the first time it plays. After it pauses for the first time it goes to its normal speed. I recorded it but the file is too big to upload here.

I think I know what your issue is your Goal1 has Vector3 and your Goal2 has CFrame try changing goal1 to CFrame

You can adjust the time it will take to complete in tweeninfo if it’s going too fast?

This is incorrect, TweenService:Create() only takes 3 parameters. And you’re supposed to put the delay in the TweenInfo

Apologies, looking back at that now I don’t know what I was thinking

Make sure that the parts are anchored in part’s properties.
I got caught by this problem multiple times.

Could it be due to the EasingStyle? The Sine EasingStyle tends to start off fast then slow down later on in the tween.