Hello I make a game where player can upgrade their car by deattach car parts from car body. I writed a player controller and when I hit play button and press WASD for move nothing happens Code (CSharp): using System.Collections; using System.Collections.Generic; using UnityEngine; using NWH.VehiclePhysics2; using System; public class PlayerController : MonoBehaviour { public float moveSpeed = 5f; public float rotationSpeed = 120f; public float jumpForce = 5f; public Transform cameraTransform; public GameObject phoneModel; public GameObject screwdriverBox; public NWHVehicleController carController; public GameObject steeringWheelIcon; public GameObject carDrivingUI; private Rigidbody rb; private bool isJumping = false; private bool isDriving = false; private bool isInCar = false; private GameObject currentCar; private bool isInToolMode = false; private readonly GameObject carriedObject; private void Start() { rb = GetComponent<Rigidbody>(); } private void Update() { if (!isDriving) { // Movement float horizontalInput = Input.GetAxis("Horizontal"); float verticalInput = Input.GetAxis("Vertical"); Vector3 moveDirection = (horizontalInput * transform.right + verticalInput * transform.forward).normalized; rb.velocity = new Vector3(moveDirection.x * moveSpeed, rb.velocity.y, moveDirection.z * moveSpeed); // Rotation float mouseX = Input.GetAxis("Mouse X") * rotationSpeed * Time.deltaTime; transform.Rotate(Vector3.up * mouseX); // Jump if (Input.GetKeyDown(KeyCode.Space) && !isJumping) { rb.AddForce(Vector3.up * jumpForce, ForceMode.Impulse); isJumping = true; } // Enter/exit car if (isInCar) { if (Input.GetKeyDown(KeyCode.E)) { if (currentCar != null) { isDriving = true; carController.DrivenBy = gameObject; carController.ApplyControlInput(true); carDrivingUI.SetActive(true); } } } // Interaction if (Input.GetKeyDown(KeyCode.U)) { UseObject(); } if (Input.GetKeyDown(KeyCode.Mouse0)) { if (isInToolMode) { TakeScrewdriver(); } else { TakeObject(); } } if (Input.GetKeyDown(KeyCode.Mouse1)) { ThrowObject(); } if (Input.GetKeyDown(KeyCode.Mouse2)) { RotateObject(); } // Tool mode if (Input.GetKeyDown(KeyCode.Alpha1)) { if (!isInToolMode) { isInToolMode = true; screwdriverBox.SetActive(true); } else { isInToolMode = false; if (carriedObject != null) { DropObject(); } screwdriverBox.SetActive(false); } } } else { // Car driving mode if (currentCar != null) { if (Input.GetKeyDown(KeyCode.Return)) { isDriving = false; carController.DrivenBy = null; carController.ApplyControlInput(false); carDrivingUI.SetActive(false); } } } } private void ThrowObject() { throw new NotImplementedException(); } private void UseObject() { throw new NotImplementedException(); } private void TakeScrewdriver() { throw new NotImplementedException(); } private void RotateObject() { throw new NotImplementedException(); } private void TakeObject() { throw new NotImplementedException(); } private void DropObject() { throw new NotImplementedException(); } private void OnCollisionEnter(Collision collision) { if (collision.gameObject.CompareTag("Ground")) { isJumping = false; } } private void OnTriggerEnter(Collider other) { if (other.CompareTag("Car")) { isInCar = true; currentCar = other.gameObject; steeringWheelIcon.SetActive(true); } } } Here is the source code (I use NWH vehicle Physics) And Input manager config