Player Movement bugs

When i hold W my player is running Run animation but he direction is inverse: (RedLine is the direction)

And same when i hold S.

Script:

using UnityEngine;
using System.Collections;

[RequireComponent(typeof(Animator))]
[RequireComponent(typeof(CharacterController))]
public class PlayerMovement : MonoBehaviour
{
    Animator animator;
    CharacterController characterController;


    [System.Serializable]
    public class AnimationSettings
    {
        public string verticalVelocityFloat = "Forward";
        public string horizontalVelocityFloat = "Strafe";
        public string groundedBool = "isGrounded";
        public string jumpBool = "isJumping";
    }
    [SerializeField]
    public AnimationSettings animations;

    [System.Serializable]
    public class PhysicsSettings
    {
        public float gravityModifier = 9.81f;
        public float baseGravity = 50.0f;
        public float resetGravityValue = 1.2f;
    }
    [SerializeField]
    public PhysicsSettings physics;

    [System.Serializable]
    public class MovementSettings
    {
        public float jumpSpeed = 6f;
        public float jumpTime = 0.25f;
    }
    [SerializeField]
    public MovementSettings movement;

    bool jumping;
    bool resetGravity;
    float gravity;

    void Start()
    {
        animator = GetComponent<Animator>();
        characterController = GetComponent<CharacterController>();
        SetupAnimator();
    }

    void Update()
    {
        ApplyGravity();
        Animate(Input.GetAxis("Vertical"), Input.GetAxis("Horizontal"));

        if(Input.GetButtonDown("Jump"))
        {
            Jump();
        }
    }

    public void Animate(float forward, float strafe)
    {
        animator.SetFloat(animations.verticalVelocityFloat, forward);
        animator.SetFloat(animations.horizontalVelocityFloat, strafe);
        animator.SetBool(animations.groundedBool, characterController.isGrounded);
        animator.SetBool(animations.jumpBool, jumping);
    }

    public void Jump()
    {
        if(jumping)
        {
            return;
        }

        if(characterController.isGrounded)
        {
            jumping = true;

            StartCoroutine(StopJump());
        }
    }

    IEnumerator StopJump()
    {
        yield return new WaitForSeconds(movement.jumpTime);
        jumping = false;
    }

    void ApplyGravity()
    {
        if(!characterController.isGrounded)
        {
            if(!resetGravity)
            {
                gravity = physics.resetGravityValue;
                resetGravity = true;
            }

            gravity += Time.deltaTime * physics.gravityModifier;
        }
        else
        {
            gravity = physics.baseGravity;
            resetGravity = false;
        }

        Vector3 gravityVector = new Vector3();

        if(!jumping)
        {
            gravityVector.y -= gravity;
        }
        else
        {
            gravityVector.y = movement.jumpSpeed;
        }

        characterController.Move(gravityVector * Time.deltaTime);
    }

    void SetupAnimator()
    {
        Animator[] animators = GetComponentsInChildren<Animator>();

        if(animators.Length > 0)
        {
            for(int i = 0; i < animators.Length; i++)
            {
                Animator anim = animators[i];
                Avatar av = anim.avatar;

                if(anim != animator)
                {
                    animator.avatar = av;
                    Destroy(anim);
                }
            }
        }
    }
}

I am very little experience with Unity Animation system. It sounds like however you setup your animations, that somehow the verticalVelocityFloat is exactly backwards. A quick fix could be to do this:

// Note the -foward
animator.SetFloat(animations.verticalVelocityFloat, -forward);

Though ideally you should dig into why its going backwards from a positive forward in the first place.

Now, when i hold W player is move correctly but animation is for S.

And I fallowed a tutorial for this type of Player Movement and at him is working correctly.

EDIT:

That makes sense. Was a silly suggestion. I see you have 2 animations both labeled walking. I assume those are the forward and backward walking for W/S. Maybe they are just backwards and swapping two lines:
0,.5,1 and 0.-0.5,-1 will fix this problem

I fixed, but not all.

EDIT: Ok i fixed, i made a new character i exported in mixamo, and i remade the project :)), thx for help.