If you’re moving the car with tweens or changing its CFrame manually, then that means you’re not setting the car’s Velocity. The car is moving, but it’s not moving, so the passengers don’t move either, you get what I’m saying?
You see the opposite of this when you set the Velocity of a completely still and anchored part: it becomes a conveyer belt. If this part were also being moved/tweened in the direction of its Velocity, then you’d have a part that moves and also moves whatever is standing on it.
Velocity is the rate of change of the Position.
If you tween a brick with Linear from (0, 0, 0) to (10, 0, 0) in 2 seconds, then the Velocity of the part should be (0, 0, 0) before and after the tween (when it’s completely still) and (5, 0, 0) during the tween, because it’s moving at 5 studs per second for 2 seconds, which amounts to 10 studs of movement.
If you tween it with Quad the same way, then the Velocity should be tweened with Linear from (0, 0, 0) to (10, 0, 0).
If you tween the car with Cubic, then the Velocity should be tweened with Quad from (0, 0, 0) to (15, 0, 0).
Example
-- Put this inside an anchored Part at the center of the world
-- and an unanchored part on top of it, or just stand on it
local TweenService = game:GetService("TweenService")
local part = script.Parent
local duration = 2
local distance = 10
-- y = x^3
-- x^3 is cubic
-- easingdirection is In because that starts out slow and ends up fast
local tween1 = TweenService:Create(
part,
TweenInfo.new(duration, Enum.EasingStyle.Cubic, Enum.EasingDirection.In),
{Position = Vector3.new(distance, 0, 0)}
)
-- y' = 3*x^2
-- x^2 is quad
local tween2 = TweenService:Create(
part,
TweenInfo.new(duration, Enum.EasingStyle.Quad, Enum.EasingDirection.In),
{Velocity = Vector3.new(distance * 3 / duration, 0, 0)}
)
function start()
part.Position = Vector3.new()
part.Velocity = Vector3.new()
tween1:Play()
tween2:Play()
end
tween1.Completed:Connect(start)
start()
Learn about differentiation if you want to know why, or simply set the velocity to (position B - position A) * time since the velocity was last changed
really often.
If your car is unanchored and actually physically simulated and players aren’t staying on it, then the car’s part might have 0 Friction.
If all else fails, make the world move around the car instead of making the car move. This way, the players still stay still, but so does the car.