How to make simple third person controller with Character Controller and new input system?

I’m looking to create a simple 3D third person controller using the new input system. I’m using the below code and input actions which almost gets me what I need; left and right is working, but up and down moves up and down instead of forward and back on the Z axis.

Can anyone let me know how to get the analog stick up/down to move the Z axis instead of Y?

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

public class PlayerController : MonoBehaviour, InputMaster.IPlayerActions

    public float walkSpeed;
    public CharacterController controller;
    private InputMaster inputMaster;
    Vector2 MoveComposite;
    Vector3 MoveDirection =;

    private void OnEnable(){
        if (inputMaster != null)

        inputMaster = new InputMaster();

    private void OnDisable(){

    // Start is called before the first frame update
    void Start()

    // Update is called once per frame
    void Update()

        controller.Move(MoveComposite * Time.deltaTime * walkSpeed);

    public void OnMove(InputAction.CallbackContext context){
        MoveComposite = context.ReadValue<Vector2>();


Hi, controller.Move takes a Vector3 and you are giving it a Vector2, so it is converting it to this (x, y, 0), what you need to do is to convert it manually and make it (x, 0, y) instead, to only move in the x and z axis.