When a new physics Part is cloned into workspace and an AssemblyLinearVelocity is immediately applied, the Part does not appear to move at the expected velocity during its initial physics steps. It produces a noticeable initial slowdown/hesitation before behaving according to the assigned velocity.
This is particularly noticeable with high velocities and is problematic for fast-moving projectiles such as cannon shells, grenades, rockets, etc.
The issue also occurs when using Roblox Server Authority. Since Server Authority is intended to provide authoritative server-side physics simulation, I expected the initial velocity to be applied consistently from the first simulation step.
Steps to reproduce:
- Create a simple BasePart named “Shell” in ReplicatedStorage.
- Make sure the Part is unanchored and can participate in physics.
- Create a Script that spawns the projectile during the simulation.
- Clone the Part.
- Parent it to Workspace.
- Position it at a spawn point.
- Immediately set AssemblyLinearVelocity to a high value.
- Observe the projectile’s movement immediately after spawning.
Example:
local projectile = game.ReplicatedStorage.Shell:Clone()
projectile.Parent = workspace
projectile.CFrame = workspace.Spawn.CFrame
projectile.AssemblyLinearVelocity = workspace.Spawn.CFrame.LookVector * 500
The projectile visibly experiences an initial slowdown/hesitation instead of immediately behaving as an object traveling at 500 studs/second.
The problem is particularly easy to observe when recording the projectile with a high-speed camera or comparing its position/velocity during the first few simulation steps.
The issue appears to have existed for a long time and is still reproducible with Server Authority.
This makes it difficult to implement reliable high-speed physics projectiles. For example, a tank shell should leave the barrel immediately at its specified muzzle velocity, but the initial slowdown changes the projectile’s trajectory and timing.
I have reproduced this behavior with Server Authority enabled.
Expected behavior
When AssemblyLinearVelocity is assigned to a newly spawned physics assembly, I expect the assembly to immediately participate in the physics simulation using the specified velocity, starting from the first applicable physics step.
For example, if AssemblyLinearVelocity is set to:
AssemblyLinearVelocity = direction * 500
the projectile should immediately move according to a velocity of approximately 500 studs/second without an unexplained initial slowdown or hesitation.
This should behave consistently when using Server Authority.
