✓ Accepted answer
Your script seems a little out of the ordinary; I'll give you another simpler one that you can use for reference.
So instead of moving the player's humanoid around using CFrames (used in camera positions), you can use vectors (which are the same thing but for moving around objects such as blocks or players). You can do this by moving the player's character. The player's character is actually a grouped model in workspace with the player's name (game.Workspace["Player's name"]). Grouped models are a bit different from normal parts in game. Rather than using "game.workspace["Player's name"].position", you use "game.workspace["Player's name"]:MoveTo()".
Here's an example as follows:
local plr = game.Players.LocalPlayer
local Mouse = Player:GetMouse()
Mouse.KeyDown:connect(function(key)
Key = Key:lower()
if Key == 'e' then
plr.Character:MoveTo(Vector3.new(x, y, z))
end
end)
If you have any problems or questions please contact me. ;)