Help with Unity Input System

I am using a project from a course in Udemy to learn how to iplement Gamepad input in the game. Using Unity Package Manager I downloaded Input System. Then:

  1. I created a Input action for Player, named PlayerControls.

  2. Created a action map called GamePlay, with Action Type “Value” and Control Type “Any”

  3. Inside it, created two actions, what I need rn: Shoot andMovement. First one is assigned with Button South, second one is with Left Stick, buyt I do want it to accept D-Padas as well, so here is my first doubt.

  4. Saved the asset, created a C# script from it.

  5. Changed something in my code that it is like bellow.

  6. Shoot is working just fine. After some attempts I kinda manaaged to make it work, but for some reason, the speed was of the left stick iunput would be added with the keyboard input, if both are pressed. How is the best way to deal with this input so that it wont have this behavior?

  7. Also, in the course it is teached as a 2D game but It always use Vector 3 for some reason. Is there any problem if I started using a Vector 2 in the Player Input of Left Stick?

  8. Also, how to use this Input to navigate in the main menu and pause menu?

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

public class Player : MonoBehaviour
{
    [SerializeField]
    private int _lives = 3;
    [SerializeField]
    private float _speed = 5.0f;    
    [SerializeField]
    private GameObject _laserPrefab;
    [SerializeField]
    private GameObject _tripleShot;
    [SerializeField]
    private GameObject _shieldVisualizer;    
    [SerializeField]
    private bool _canTripleShot = false;
    [SerializeField]
    private bool _speedBoostActive = false;
    [SerializeField]
    private bool _isShieldsActive = false;
    [SerializeField]
    private GameObject _rightEngine, _leftEngine;
    [SerializeField]
    private GameObject _explosionPrefab;
    [SerializeField]
    private AudioClip _laserSoundClip;

    PlayerControls _controls;
    
    
    public bool _PlayerOne = false;    
    public bool _PlayerTwo = false;           

    Coroutine _tripleShotPowerDown;
    Coroutine _speedBoostPowerDown;

    private AudioSource _audioSource;
    private UIManager _uiManager;
    private SpawnManager _spawnManager;
    private GameManager _gameManager;

    private float _newFire = 0.0f;
    private float _fireRate = 0.35f;

    Vector2 _playerMove;

    private void Awake()
    {
        _controls = new PlayerControls();

        _controls.Gameplay.Shoot.performed += ctx => ShootLaser();
        _controls.Gameplay.Movement.performed += ctx => _playerMove = ctx.ReadValue<Vector2>();
        _controls.Gameplay.Movement.canceled += ctx => _playerMove = ctx.ReadValue<Vector2>();
    }

    private void OnEnable()
    {
        _controls.Gameplay.Enable();
    }

    private void OnDisable()
    {
        _controls.Gameplay.Disable();
    }



    void Start()
    {
        _gameManager = GameObject.Find("Game_Manager").GetComponent<GameManager>();
        
        if (_gameManager.isCoopMode == false)
        {
            transform.position = new Vector3(0, 0, 0);
        }
        
        _spawnManager = GameObject.Find("Spawn_Manager").GetComponent<SpawnManager>();
        _uiManager = GameObject.Find("Canvas").GetComponent<UIManager>();      
        _audioSource = GetComponent<AudioSource>();
        

        if (_spawnManager == null)
        {
            Debug.LogError("The Spawn Manager is NULL");
        }

        if (_uiManager == null)
        {
            Debug.Log("The UI Manager is NULL");
        }

        if (_audioSource == null)
        {
            Debug.Log("Audio Source in NULL");
        }

        else
        {
            _audioSource.clip = _laserSoundClip;
        }
    }


    void Update()
    {
        if (Time.timeScale == 0)
        
            return;
        
        
        CalculateMovement();


        if (_gameManager.isCoopMode)
        {

            if (Input.GetMouseButtonDown(0) && _PlayerTwo)
            
                ShootLaser();
            
            else if (Input.GetKeyDown(KeyCode.Space) && _PlayerOne)
            
                ShootLaser();
            
        }
        else
        {
            if ((Input.GetKeyDown(KeyCode.Space) || Input.GetMouseButtonDown(0))  && _PlayerTwo == false)

                ShootLaser();
        }       
        

    }


    void CalculateMovement()
    {
        float horizontalInput;
        float verticalInput;
        

        if (!_PlayerTwo)
        {
            horizontalInput = Input.GetAxisRaw("Horizontal");
            verticalInput = Input.GetAxisRaw("Vertical");
        }
        else
        {            
            horizontalInput = Input.GetAxisRaw("P2Horizontal");
            verticalInput = Input.GetAxisRaw("P2Vertical");
        }

        Vector3 direction = new Vector3(horizontalInput, verticalInput, 0);

        float currentSpeedBoost = _speedBoostActive ? 1.5f : 1;

        transform.Translate(_speed * currentSpeedBoost * Time.deltaTime * direction);


        transform.position = new Vector3(transform.position.x, Mathf.Clamp(transform.position.y, -3.9f, 0), 0);


        if (transform.position.x > 9.6f)
        
            transform.position = new Vector3(-9.6f, transform.position.y, 0);
        
        else if (transform.position.x < -9.6f)
        
            transform.position = new Vector3(9.6f, transform.position.y, 0);
        

    }

            

  
    void ShootLaser()
    {
        

        var ShotType = _canTripleShot ? _tripleShot : _laserPrefab;

        if (Time.time > _newFire)
        {
            _newFire = Time.time + _fireRate;
            Instantiate(ShotType, transform.position + new Vector3(0, 0.44f, 0), Quaternion.identity);  
            _audioSource.Play();
        }
    }

}