Well, that’s what’s supposed to happen. If you know the 3rd law of Newton, when the character flies into an anchored part at super speed, a"normal" force is exerted on the character which is equal to the force at which the player hit the anchored part (in this case, math.huge) and its direction is the normal of the touched surface of the part, so the initial velocity is greatly influenced and the player is flung.
Why don’t you just use playerCharacter:SetPrimaryPartCFrame(CFrame.new(targetVector3))
Well, you could use raycasting :FindPartOnRay(), get the normal at the desired position, and then offset the cframe in that direction by half of the player’s size, so that it doesn’t get stuck in walls or terrain
You are saying you are “insert the velocity” but you are using a BodyPosition. I can tell you are using a BodyPosition because your code says Instance.new("BodyPosition"). There is literally no mention of “Velocity” anywhere in your code.
Instead, why don’t you actually use a velocity BodyMover?