I've been trying to figure out a way to do this for like 2 days now. I tried bodyvelocity, position, CFrame, and lookvector to make the part move forwards to make it look like it's only changing size in one direction but nothing works.
ReplicatedStorage.RemoteEvent.OnServerEvent:Connect(function(player)
local righthand = player.Character.RightHand
local humanoidroot = player.Character.HumanoidRootPart
wait(0.5)
local Beam = ServerStorage.BeamPart:Clone()
Beam.Parent = game.Workspace
Beam.Anchored = false
Beam.CFrame = righthand.CFrame + humanoidroot.CFrame.lookVector * 1.5
Beam.Parent = game.Workspace
Beam.BrickColor = BrickColor.new("Bright orange")
Beam.Size = Vector3.new(3,3,3)
Beam.Material = Enum.Material.Neon
Beam.CanCollide = false
Beam.Massless = true
Beam.Transparency = 0
local weld = Instance.new("Weld")
weld.Part0 = righthand
weld.Part1 = Beam
weld.Parent = Beam
for i = 1,10 do
wait()
Beam.Transparency = Beam.Transparency + 0.1
Beam.Size = Beam.Size + Vector3.new(0,1,0)
end
end)

2 comments
Bit of a late reply, but shift your beam over by the long size of the beam / 2
What do you mean?