I've been trying to write a script that changes the walking animation depending on the direction

Like I said in the title, I’ve been wanting to create a script that depending on what key you’re pressing, the animation on your character will change so that the legs point to the direction in which you’re moving, for example: Say you’re pressing W+D to move diagonally, and while you do, an animation plays that rotates your hips towards that direction. Same goes for W+A. The issue is, none of the animations I’ve made for each scenario play, none of them do, and I’ve ran out of solutions. I don’t know what to do anymore. I’ve tried using UserInputService to detect in a function whether or not the player is pressing both W and A or W and D, I tried using ContextActionService and still nothing. I don’t know what I’m doing wrong, but here’s my code if it’s worth something:

    local Player = game.Players:WaitForChild("LocalPlayer")
    local Character = Player:WaitForChild("Character")
    local Humanoid = Character:WaitForChild("Humanoid")
    local UIS = game:GetService("UserInputService")
    local animator = Humanoid:WaitForChild("Animator")
    local playing

    UIS.InputBegan:connect(function(input, processed)
    	if processed then return end
    	if UIS:IsKeyDown(Enum.KeyCode.D) and UIS:IsKeyDown(Enum.KeyCode.W) then
    		local AnimD = Instance.new("Animation", Humanoid)
    		AnimD.Name = "AnimD"
    		AnimD.AnimationId = "rbxassetid://6842293003"
    		local AnimDTrack = animator:LoadAnimation(AnimD)
    		playing = AnimDTrack
    		AnimDTrack:Play()	
    	elseif UIS:IsKeyDown(Enum.KeyCode.A) and UIS:IsKeyDown(Enum.KeyCode.W) then
    		local AnimA = Instance.new("Animation", Humanoid)
    		AnimA.Name = "AnimA"
    		AnimA.AnimationId = "rbxassetid://6842289525"
    		local AnimATrack = animator:LoadAnimation(AnimA)
    		playing = AnimATrack
    		AnimATrack:Play()		
    	elseif UIS:IsKeyDown(Enum.KeyCode.S) then
    		local AnimS = Instance.new("Animation", Humanoid)
    		AnimS.Name = "AnimS"
    		AnimS.AnimationId = "rbxassetid://6842295145"
    		local AnimSTrack = animator:LoadAnimation(AnimS)
    		playing = AnimSTrack
    		AnimSTrack:Play()			
    	end
    end)


    UIS.InputEnded:connect(function(input)
    	playing:Stop()
    end)

What I’ve been trying to do more or less is to make my game’s movement more reallistic, so that when I go sideways or diagonally my character doesn’t just have the same walking animation all the time.

1 Like