just change goal.Position to goal.CFrame which would tween the rotation too
keep it as goal.Position but wrap all of the cframe stuff in ( ).Position, so like (CFrame.new(blah,blahblah)*blahblahblah).Position, this would keep the original rotation and change the position
Now instead of doing distance/2 I think you need to do part.Size.Z/2 since it’s not the full length from start to finish anymore
As for resetting the part, I would just create a new part for each projectile instead of reusing the same one, it’s less efficient but is much easier to work with, especially with tweens that go a set amount of time which need proper timing and stuff
So you want it to be a constant beam but you tween it so that it’s slightly behind the person?
If so that makes much more sense thinking back on your post yesterday