So far I have a character controller that enables me to move around, sprint and crouch (no animation) , but I am unable to get the controller to jump. I know 100% the character is getting the input to jump, and the movement vector is around ~40 on the Y axis, so the player should be moving. The problem is, nothing happens. The player can still move around, and fall of ledges, but nothing happens when i press space This is my code:
using UnityEngine; public class KeyboardMovement : MonoBehaviour { private CharacterController controller; public float walkSpeed; public float sprintSpeed; public float crouchSpeed; public float jumpHeight; Vector3 up = Vector3.zero; Vector3 movement = Vector3.zero; Vector3 forward = Vector3.zero; Vector3 sideways = Vector3.zero; void Start() { controller = GetComponent<CharacterController>(); } void Update() { float speed = walkSpeed; //If crouching, set speed to crouch speed. This ovverides sprinting if (SingletonSettings.GetKey(SingletonSettings.Keybindings.crouch)) speed = crouchSpeed; //Else if sprinting, set speed to sprint speed else if (SingletonSettings.GetKey(SingletonSettings.Keybindings.sprint)) speed = sprintSpeed; //Create vectors for movement forward = transform.TransformDirection(Vector3.forward) * Input.GetAxis("Vertical"); sideways = transform.TransformDirection(Vector3.right) * Input.GetAxis("Horizontal"); //up = SingletonSettings.GetKey(SingletonSettings.Keybindings.jump) && controller.isGrounded ? Vector3.up * jumpHeight : Vector3.zero; movement = (up * 100) + ((forward + sideways) * 10 * Time.deltaTime * speed); //Combine vectors and Multiply by DeltaTime to ensure smooth movement at different framerates. //Also multiply by 10*speed to ensure correct speed in different states if (controller.isGrounded && Input.GetKey(KeyCode.Space)) { movement.y = jumpHeight*50 * Time.deltaTime; } controller.SimpleMove(movement); } void OnGUI() { GUILayout.Label('\n' + Newtonsoft.Json.JsonConvert.SerializeObject(movement.y, Newtonsoft.Json.Formatting.Indented, new Newtonsoft.Json.JsonSerializerSettings { ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore })); } }