How to add force to objects?

Hi there, I am trying to make a game where you need to grab and move objects. Kind of like Portal but not like equipping a tool. I want it to move to the front of where the player is looking and can’t do that.
I have 2 problems, the first is that I am using Camera.CFrame.LookVector and it doesn’t seem to go in the direction the player’s camera is facing. (First-Person) The second is that I am using the script to check what Mouse.Target is and moving that. With that, it doesn’t work because if an object is parented and is welded, the welded parts don’t react because they only react to forces such as gravity. I need them to be able to move with the target. (Sorry if this paragraph is long :sweat:) Here is my current script:

local CamCFrame = CFrame.new()

game.ReplicatedStorage.RemoteEvents.Grab.OnServerEvent:Connect(function(Player,Torso,Target,GrabPos,Camera)
	
	local Holding = true
	
	if Target.Name == "Vent" then
		
		Target.Anchored = false
		
	end
	
	while Holding do
		
		Target.Position += CamCFrame.LookVector * 5
		wait()
		Target.Position -= CamCFrame.LookVector * 5
		
	end
	
end)

game.ReplicatedStorage.RemoteEvents.GrabLook.OnServerEvent:Connect(function(Player,CCFrame)
	CamCFrame = CCFrame
end)

So, this?

Position += 5
Position -= 5
wait()

Try adding another wait at the end of it and see if it will do anything different.

		Target.Position += CamCFrame.LookVector * 5
		wait()
		Target.Position -= CamCFrame.LookVector * 5
        wait()

No I just did that to check but that script doesn’t work anyway.
I also tried that and this is what happened:

https://gyazo.com/03da6c98bfcbad64fcd5b29a8e9d37a1.mp4

It doesn’t work sorry.

change

Target.Position += CamCFrame.LookVector * 5
wait()
Target.Position -= CamCFrame.LookVector * 5

into

Target.Velocity += CamCFrame.LookVector * 5
wait()
Target.Velocity -= CamCFrame.LookVector * 5