Input System : Character movemevnt and Jump

Hello, I’m having a problem with the new input system with Unity. The Keyboard works just fine (animation and all) but when I try to use the Gamepad (Xbox 360 controller), the character moves, more like glides while in her idle animation but won’t play her walk animation. And when I press the jump button she falls through the floor and just disappears from existence. I’ll provide my code and some screenshots, please I seriously need help.

Gamepad Script:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.InputSystem;

public class Gamepad : MonoBehaviour
{
    PlayerControls controls;
    Vector2 move;

     void Awake()
    {
        controls = new PlayerControls();
        controls.Gameplay.Jump.performed += ctx => Jump();
        controls.Gameplay.Move.performed += ctx => move = ctx.ReadValue<Vector2>();
        controls.Gameplay.Move.canceled += ctx => move = Vector2.zero;
    }
    void Jump()
    {
        transform.localPosition *= 5f;
    }
    void Update()
    {
        Vector2 m = new Vector2(move.x, move.y) * Time.deltaTime;
        transform.Translate(m, Space.World);
    }
    void OnEnable()
    {
        controls.Gameplay.Enable();
    }

     void OnDisable()
    {
        controls.Gameplay.Disable();
    }

}

Player Movement Script:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlayerController2D : MonoBehaviour
{
  private bool isGrounded;

    [SerializeField]
    Transform groundCheck;
    [SerializeField]
    Transform groundCheckL;
    [SerializeField]
    Transform groundCheckR;
    Animator animator;
    Rigidbody2D r2D;
    SpriteRenderer spriteR;
    [SerializeField]
    public float runSpeed = 1.5f;
    [SerializeField]
    public float jumpSpeed =5;

    // Start is called before the first frame update
    void Start()
    {
        animator = GetComponent<Animator>();
        r2D = GetComponent<Rigidbody2D>();
        spriteR = GetComponent<SpriteRenderer>();
    }

    void FixedUpdate()
    {
        if ((Physics2D.Linecast(transform.position, groundCheck.position, 1 << LayerMask.NameToLayer("Ground"))) ||
           (Physics2D.Linecast(transform.position, groundCheckL.position, 1 << LayerMask.NameToLayer("Ground")))||
          (Physics2D.Linecast(transform.position, groundCheckR.position, 1 << LayerMask.NameToLayer("Ground"))))
        {
            isGrounded = true;
        }
        else
        {
            isGrounded = false;
            animator.Play("Jump");
        }
        if(Input.GetKey("d")|| Input.GetKey("right"))
        {
            r2D.velocity = new Vector2(runSpeed, r2D.velocity.y);
            if(isGrounded)
            animator.Play("Walk");
            spriteR.flipX = true;
        }
        else if (Input.GetKey("a") || Input.GetKey("left"))
        {
            r2D.velocity = new Vector2(-runSpeed, r2D.velocity.y);
            if (isGrounded)
                animator.Play("Walk");
            spriteR.flipX = false;
        }
        else
        {
            if (isGrounded)
                animator.Play("Idle");
            r2D.velocity = new Vector2(0, r2D.velocity.y);
        }
        if (Input.GetKey("space")&& isGrounded)
        {
            r2D.velocity = new Vector2(r2D.velocity.x, jumpSpeed);
            animator.Play("Jump");
        }
    }
}

159901-capture.png

159902-capture2.png

This script should be able to handle movement and jumping with a gamepad; it’s what I use for my 3D RPG. Keep in mind, I use Cinemachine’s Freelook camera. If you don’t use it it could mess up the way the movement script works.

If what I have here isn’t enough information ,I suggest you check out this video: THIRD PERSON MOVEMENT in Unity - YouTube

Ask me more questions if you need more specifics, and I might be able to help.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.InputSystem;

public class ThirdPersonMovement : MonoBehaviour
{
    PlayerControls controls;

    Vector3 movement;
    public float movementSpeed = 7f;

    Vector3 velocity;
    public float gravity = -25f;
    public float jumpHeight = 1.5f;

    public Transform groundCheck;
    public float groundDistance = 0.4f;
    public LayerMask groundMask;
    bool isGrounded;

    public CharacterController controller;
    public Transform cam;

    public float turnSmoothTime = 0.07f;
    float turnSmoothVelocity;

    void Awake()
    //Controller input roles
    {
        controls = new PlayerControls();

        controls.Gameplay.Movement.performed += ctx => movement = ctx.ReadValue<Vector2>();
        controls.Gameplay.Movement.canceled += ctx => movement = Vector3.zero;

        controls.Gameplay.Jump.performed += ctx => Jump();
    }

    // Update is called once per frame
    void Update()
    {
        //Ground Check
        isGrounded = Physics.CheckSphere(groundCheck.position, groundDistance, groundMask);

        if(isGrounded && velocity.y < 0)
        {
            velocity.y = -2f;
        }

        //Character Movement
        float horizontal = Input.GetAxisRaw("Horizontal");
        float vertical = Input.GetAxisRaw("Vertical");
        Vector3 direction = new Vector3(horizontal, 0f, vertical).normalized;

        //Character Rotation
        if (direction.magnitude >= 0.1f)
        {
            float targetAngle = Mathf.Atan2(direction.x, direction.z) * Mathf.Rad2Deg + cam.eulerAngles.y;
            float angle = Mathf.SmoothDampAngle(transform.eulerAngles.y, targetAngle, ref turnSmoothVelocity, turnSmoothTime);
            transform.rotation = Quaternion.Euler(0f, angle, 0f);

            Vector3 moveDir = Quaternion.Euler(0f, targetAngle, 0f) * Vector3.forward;
            controller.Move(moveDir.normalized * movementSpeed * Time.deltaTime);
        }

        //Gravity
        velocity.y += gravity * Time.deltaTime;
        controller.Move(velocity * Time.deltaTime);
    }

   void Jump()
    {
        if (isGrounded)
        {
            velocity.y = Mathf.Sqrt(jumpHeight * -2f * gravity);
        }
    }

    void OnEnable()
    {
        controls.Gameplay.Enable();
    }

    void OnDisable()
    {
        controls.Gameplay.Disable();
    }
}