- Home /
 
 
               Question by 
               WStroobandt · Jun 04, 2020 at 03:39 PM · 
                scripting problemmovementcharactercontrollercharacter controllercharacter movement  
              
 
              Player acts weirdly when I release movement input
Good day everyone! I was trying to make my player face the direction he's walking towards, but then weird things started happening. Whenever I now let go of my input keys, the player slowly gets sucked to his local z-axis. Sometimes he does this while standing up, sometimes he does this flipped. Any help would be highly appreciated!
Thanks in advance!
I'll provide you with my script:
 public class JackMovement3D : MonoBehaviour
 {
     public float speed = 6.0F;
     public float VerticalSpeed = 10f;
     public float HorizontalSpeed = 60f;
     public float rotationSpeed = 5f;
     public float jumpSpeed = 8.0F;
     public float gravity = 20.0F;
     private Vector3 moveDirection = Vector3.zero;
     private Animator animator;
 
     private void Start()
     {
         animator = GetComponent<Animator>();
     }
 
     void Update()
     {
         CharacterController controller = GetComponent<CharacterController>();
         // is the controller on the ground?
         if (controller.isGrounded)
         {
             float horizontal = Input.GetAxis("Horizontal") * HorizontalSpeed;
             float vertical = Input.GetAxis("Vertical") * VerticalSpeed;
 
             //Feed moveDirection with input.
             moveDirection = new Vector3(horizontal, 0, vertical);
             moveDirection = transform.TransformDirection(moveDirection);
             
             //Multiply it by speed.
             moveDirection *= speed;
         }
 
         //Applying gravity to the controller
         moveDirection.y -= gravity * Time.deltaTime;
 
         animator.SetFloat("Blend", controller.velocity.magnitude);
 
         //Look at walking direction
         Quaternion newRotation = Quaternion.LookRotation(moveDirection);
         transform.rotation = Quaternion.Slerp(transform.rotation, newRotation, rotationSpeed);
 
         // CharacterController.Move to move the player in target direction
         controller.Move(moveDirection * Time.deltaTime);
     }
 
     private void LateUpdate()
     {
         transform.localEulerAngles = new Vector3(0, transform.localEulerAngles.y, transform.localEulerAngles.z);
     }
 }
 
              
               Comment
              
 
               
              Your answer