Question by 
               Soundlag · Feb 06, 2016 at 06:10 PM · 
                charactercontrollerjumpcharacter controller  
              
 
              Why won't my character jump smoothly?
I used this script for player movement and jumping.
 using UnityEngine;
 using System.Collections;
 
 public class PlayerController : MonoBehaviour
 {
 
     [SerializeField]
     private float _walkSpeed;
     [SerializeField]
     private float _runSpeed;
     [SerializeField]
     private float _crouchSpeed;
     [SerializeField]
     private float _jumpSpeed;
     [SerializeField]
     private float _gravityMultiplier;
     [SerializeField]
     private float _mouseLookSensitivity;
     [SerializeField]
     private float _stickToGroundForce;
 
     private Camera _camera;
     private CharacterController _character;
     private Vector3 _moveDirection = Vector3.zero;
 
     private bool _jump;
     private bool _isJumping;
     private bool _isWalking;
     private bool _isRunning;
     private bool _isCrouching;
     private bool _previouslyGrounded;
 
     //______________________________________________________________________________
     // Function: Awake
     #region Function
     void Awake()
     {
         Cursor.lockState = CursorLockMode.Locked;
         Cursor.visible = false;
     }
     #endregion
 
     //______________________________________________________________________________
     // Function: Start
     #region Function
     void Start()
     {
         _camera = Camera.main;
         _character = GetComponent<CharacterController>();
 
         _isJumping = false;
         _isRunning = false;
         _isCrouching = false;
     }
     #endregion
 
     //______________________________________________________________________________
     // Function: Update
     #region Function
     void Update()
     {
         if (Input.GetKeyUp(KeyCode.Escape))
             UnlockCursor();
 
         LookAtMouse();
 
         if (!_jump)
         {
             _jump = Input.GetButtonDown("Jump");
         }        
 
         _previouslyGrounded = _character.isGrounded;
     }
     #endregion
 
     //______________________________________________________________________________
     // Function: FixedUpdate
     #region Function
     void FixedUpdate()
     {
         float h = Input.GetAxis("Horizontal");
         float v = Input.GetAxis("Vertical");
 
         _moveDirection = new Vector3(h, 0, v);
         _moveDirection = transform.TransformDirection(_moveDirection);
 
         float speed = GetSpeed();
 
         _moveDirection *= speed;
 
         if (_character.isGrounded)
         {
             _moveDirection.y = -_stickToGroundForce;
             if (_jump)
             {
                 _moveDirection.y = _jumpSpeed;
                 _jump = false;
                 _isJumping = true;
             }
         }
         else
         {
             _moveDirection += Physics.gravity*_gravityMultiplier*Time.fixedDeltaTime;
         }        
         _character.Move(_moveDirection * Time.fixedDeltaTime);
 
         
     }
     #endregion
 
 
     //______________________________________________________________________________
     // Function: LookAtMouse
     #region Function
     private void LookAtMouse()
     {
         Vector2 mouseDelta = new Vector2(Input.GetAxisRaw("Mouse X"), Input.GetAxisRaw("Mouse Y")) * _mouseLookSensitivity;
 
         _camera.transform.eulerAngles += new Vector3(-mouseDelta.y, 0, 0);
         transform.eulerAngles += new Vector3(0, mouseDelta.x, 0);
     }
     #endregion
 
     //______________________________________________________________________________
     // Function: GetSpeed
     #region Function
     private float GetSpeed()
     {
         float speed;
 
         _isRunning = Input.GetKey(KeyCode.LeftShift);
 
         if (_isRunning)
             _isCrouching = false;
 
         speed = !_isRunning ? _walkSpeed : _runSpeed;
 
         if (Input.GetKeyDown(KeyCode.LeftControl))
         {
             _isCrouching = !_isCrouching;
         }
 
         speed = _isCrouching ? _crouchSpeed : speed;
 
         return speed;
     }
     #endregion
 
     //______________________________________________________________________________
     // Function: UnlockCursor
     #region Function
     private void UnlockCursor()
     {
         if (Cursor.lockState == CursorLockMode.Locked)
         {
             Cursor.lockState = CursorLockMode.None;
         }
         else
         {
             Cursor.lockState = CursorLockMode.None;
         }
 
         Cursor.visible = !Cursor.visible;
     }
     #endregion
 
 
 }
 
After I hit space to jump, it just moves to its highest point without any transition in between. Then it slowly falls to the ground. How can I fix this?
               Comment
              
 
               
              Your answer
 
 
             Follow this Question
Related Questions
Jump logic issues 0 Answers
I have a problem in the jump system. 1 Answer
Character controller aplly gravity in FixedUpdate with my own gravity in Update 1 Answer
how to jump in a 2D game 2 Answers
CharacterController getting stuck on slope corners 0 Answers
 koobas.hobune.stream
koobas.hobune.stream 
                       
                
                       
			     
			 
                