I'm making a 2d game and I've been trying to find a way for the player to always face left or right depending on their inputs, I already have a script for this but it doesn't work at all and I can't figure out why. I couldn't find much on this topic on the devforums so I'm coming here for help, here's my script
I also already have a 2d camera that follows the player around, so I tried getting it's left and right vectors to put on the humanoid part
local players = game.Players
local player = players.LocalPlayer
local character = player.Character
local root = character:WaitForChild"HumanoidRootPart"
local camera = workspace.CurrentCamera
local UserInputService = game:GetService("UserInputService")
local keyA = false
local keyD = false
UserInputService.InputBegan:Connect(function(InputObject)
if InputObject.UserInputType == Enum.UserInputType.Enum.KeyCode.D then
keyD = true
elseif InputObject.UserInputType == Enum.UserInputType.Enum.KeyCode.A then
keyA = true
end
end)
UserInputService.InputEnded:Connect(function(InputObject)
if InputObject.UserInputType == Enum.UserInputType.Enum.KeyCode.D then
keyD = false
elseif InputObject.UserInputType == Enum.UserInputType.Enum.KeyCode.A then
keyA = false
end
end)
spawn(function()
while true do wait ()
if keyA == true and keyD == false then
root.CFrame = CFrame.new(root.Position, root.Position - camera.CFrame.RightVector)
elseif keyA == false and keyD == true then
root.CFrame = CFrame.new(root.Position, root.Position + camera.CFrame.RightVector)
end
end
end)
Can anyone smarter than me (which is everyone) help me on why it isn't working, or a better script to do the same thing? Thanks !
