Player stands in the air after platform goes down

I have a platform that goes up and down after a button press.
When it elevates the player, it does it fine, tends to glitch you out when it goes too fast but I can get around that. The problem is when it goes down, the player just stays in the air like in a Disney cartoon before falling. I read I need to use BodyGyro but I’ve tried that and all I got was “unable to cast to dictionary”

The script I’m using is:

local tweenService = game:GetService("TweenService")

local Elevator = script.Parent

local Platform = Elevator:WaitForChild("Platform")
local Goal = Elevator:WaitForChild("Goal")
local trigger = Elevator:WaitForChild("Trigger")
local triggerGoal = Elevator:WaitForChild("TriggerGoal")

local origCFrame = Platform.CFrame
local goalCFrame = Goal.CFrame
local origTCFrame = trigger.CFrame
local goalTCFrame = triggerGoal.CFrame

local deb = false

local openTween = tweenService:Create(Platform, TweenInfo.new(2.5,Enum.EasingStyle.Exponential), {CFrame = goalCFrame})
local closeTween = tweenService:Create(Platform, TweenInfo.new(2, Enum.EasingStyle.Exponential), {CFrame = origCFrame})
local downTween = tweenService:Create(trigger, TweenInfo.new(0.2, Enum.EasingStyle.Quad), {CFrame = goalTCFrame})
local upTween = tweenService:Create(trigger, TweenInfo.new(0.2, Enum.EasingStyle.Quad), {CFrame = origTCFrame})

trigger.Touched:Connect(function()
	if deb == false then
		deb = true
		
		openTween:Play()
		downTween:Play()
	trigger.BrickColor = BrickColor.new("Bright red")
		wait(10)
		
		closeTween:Play()
		wait(2)
	upTween:Play()
	wait(0.2)
	trigger.BrickColor = BrickColor.new("Lime green")
		deb = false
	

	end
end)