Player moves in the wrong direction

Hello everyone!

I’m following the Sneak Tutorial by Unity3D on YouTube, and now I’m working on Player Movement. It works quite nice except for one thing… If I press the left arrow on my keyboard the player moves to the right (but facing left) and the other way around when pressing the right key arrow…

He moves in the right direction if I hold the Sneak-button down, but as soon as I let the Sneak-button go the player’s moving in the wrong direction.

How can I fix this? What have I missed? It’s really annoying :stuck_out_tongue:
I removed all the code in PlayerMovement.cs that I wrote and copied it from Unity’s website, still the problem persist… :confused:

using UnityEngine;
using System.Collections;

public class PlayerMovement : MonoBehaviour
{
    public AudioClip shoutingClip;      // Audio clip of the player shouting.
    public float turnSmoothing = 15f;   // A smoothing value for turning the player.
    public float speedDampTime = 0.1f;  // The damping for the speed parameter
    

    private Animator anim;              // Reference to the animator component.
    private HashIDs hash;               // Reference to the HashIDs.
    
    
    void Awake ()
    {
        // Setting up the references.
        anim = GetComponent<Animator>();
        hash = GameObject.FindGameObjectWithTag(Tags.gameController).GetComponent<HashIDs>();
        
        // Set the weight of the shouting layer to 1.
        anim.SetLayerWeight(1, 1f);
    }
    
    
    void FixedUpdate ()
    {
        // Cache the inputs.
        float h = Input.GetAxis("Horizontal");
        float v = Input.GetAxis("Vertical");
        bool sneak = Input.GetButton("Sneak");
        
        MovementManagement(h, v, sneak);
    }
    
    
    void Update ()
    {
        // Cache the attention attracting input.
        bool shout = Input.GetButtonDown("Attract");
        
        // Set the animator shouting parameter.
        anim.SetBool(hash.shoutingBool, shout);
        
        AudioManagement(shout);
    }
    
    
    void MovementManagement (float horizontal, float vertical, bool sneaking)
    {
        // Set the sneaking parameter to the sneak input.
        anim.SetBool(hash.sneakingBool, sneaking);
        
        // If there is some axis input...
        if(horizontal != 0f || vertical != 0f)
        {
            // ... set the players rotation and set the speed parameter to 5.5f.
            Rotating(horizontal, vertical);
            anim.SetFloat(hash.speedFloat, 5.5f, speedDampTime, Time.deltaTime);
        }
        else
            // Otherwise set the speed parameter to 0.
            anim.SetFloat(hash.speedFloat, 0);
    }
    
    
    void Rotating (float horizontal, float vertical)
    {
        // Create a new vector of the horizontal and vertical inputs.
        Vector3 targetDirection = new Vector3(horizontal, 0f, vertical);
        
        // Create a rotation based on this new vector assuming that up is the global y axis.
        Quaternion targetRotation = Quaternion.LookRotation(targetDirection, Vector3.up);
        
        // Create a rotation that is an increment closer to the target rotation from the player's rotation.
        Quaternion newRotation = Quaternion.Lerp(rigidbody.rotation, targetRotation, turnSmoothing * Time.deltaTime);
        
        // Change the players rotation to this new rotation.
        rigidbody.MoveRotation(newRotation);
    }
    
    
    void AudioManagement (bool shout)
    {
        // If the player is currently in the run state...
        if(anim.GetCurrentAnimatorStateInfo(0).nameHash == hash.locomotionState)
        {
            // ... and if the footsteps are not playing...
            if(!audio.isPlaying)
                // ... play them.
                audio.Play();
        }
        else
            // Otherwise stop the footsteps.
            audio.Stop();
        
        // If the shout input has been pressed...
        if(shout)
            // ... play the shouting clip where we are.
            AudioSource.PlayClipAtPoint(shoutingClip, transform.position);
    }
}

Oh… Just noticed that if I tap on the arrow keys the player moves in the right direction, but not if I hold it down…

Hey Kovenant .
Im having the same problem how did you sort it out please let me know as soon as possible :frowning:

Hey Kovenant…
im having same issue please help me, :frowning: