function AddMovement()
coroutine.resume(coroutine.create(function()
while Vel:IsDescendantOf(Torso) and Character:IsDescendantOf(Workspace) do
if Forward ~= 0 or Side ~= 0 then
local X = Camera.CoordinateFrame.lookVector.X*Side -- But why doesn't this work?
local Y = Camera.CoordinateFrame.lookVector.Y*Speed -- This works perfectly.
local Z = Camera.CoordinateFrame.lookVector.Z*Forward -- But why doesn't this work?
Vel.Velocity = Vector3.new(X, Y, Z) -- Vel is the BodyVelocity.
elseif Forward == 0 and Side == 0 then
Vel.Velocity = Vector3.new(0, 0, 0)
end wait(LoopTime)end end))
coroutine.resume(coroutine.create(function()
Mouse.KeyDown:connect(function(Key)
if Key == "w" then
Forward = Speed -- See? All it's doing is setting the variable to positive/negative depending on the direction I'm going.
elseif Key == "a" then
Side = Speed
elseif Key == "s" then
Forward = Speed*-1
elseif Key == "d" then
Side = Speed*-1
end end)
Mouse.KeyUp:connect(function(Key)
if Key == "w" then
Forward = 0
elseif Key == "a" then
Side = 0
elseif Key == "s" then
Forward = 0
elseif Key == "d" then
Side = 0
end end) end)) end

More detail on this situation: The Y moves dynamically perfect with the Camera's Y but the X and Z seems to be static. The X and Z moves forward to side but not from the Camera's perspective unlike the Y.