To get the camera angles in a localscript, I have this code:
function cameraAngles()
local x,y,z = workspace.CurrentCamera.CFrame:toEulerAnglesXYZ()
return Vector3.new(x,y,z)
end
Then, I use the y of those angles to rotate the RotVelocity of a sphere:
script.Parent.RotVelocity = CFrame.fromEulerAnglesXYZ(0, cameraAngles.y, 0) * controls.Unit * 100
The controls records the input of the WASD Keys, and converts them into a vector3. Back in the localscript:
function getWasdKeys()
local outputMovementVector = Vector3.new(0,0,0)
for _,key in ipairs(UserInputService:GetKeysPressed()) do
if key.KeyCode == Enum.KeyCode.W then
outputMovementVector = Vector3.new(outputMovementVector.X + 1, 0, outputMovementVector.Z)
end
if key.KeyCode == Enum.KeyCode.S then
outputMovementVector = Vector3.new(outputMovementVector.X - 1, 0, outputMovementVector.Z)
end
if key.KeyCode == Enum.KeyCode.A then
outputMovementVector = Vector3.new(outputMovementVector.X, 0, outputMovementVector.Z - 1)
end
if key.KeyCode == Enum.KeyCode.D then
outputMovementVector = Vector3.new(outputMovementVector.X, 0, outputMovementVector.Z + 1)
end
end
return outputMovementVector
end
I think the problem is that the y camera angle reaches 0 at two opposite points.
