[2D Platform Game] Precise Jumping Without Holding Down Directional Button.
First, thanks for answering my query. I tried looking up via google and Unity's Search feature for a similar issue to my own, unfortunately with no success. In my game I want to give the player precise jumping controls so that when they hold down the jump button their character stops in place, they can choose a direction to jump in from among five choices (which will be shown via arrows around the character) using either the left stick, arrow keys, or d-pad, and they'll jump in that direction regardless of if they're inputting said direction via button. I'm using Input.GetAxis(“Horizontal”) to govern which choice was made. Now the problem I have is that:
- When I run the following code it crashes Unity 
- If I run the following code without the while loop the game requires my holding down a directional button after releasing the jump button in order to jump in that direction. 
The first problem is true whether I put the code in the Update, LateUpdate, or FixedUpdate function. Can anyone on here show me how to correct this issue or direct me to someone who would know?
 /**This Script controls all of the character movement.
 */
 
 using UnityEngine;
 using System.Collections;
 
 public class PlayerCharacterController : MonoBehaviour {
       //Other variables.
     public float maxSpeed = 10f;
     public float JumpForce = 1500f;
     public bool facingRight = true; 
 
     void FixedUpdate ()
     {
         MovementMechanic();
            JumpMechanic();
     }
 
     void Update(){
         PauseMechanic();
     }
 
     void MovementMechanic(){
         // Moving Mechanics (Left and Right)
         float move = Input.GetAxis("Horizontal");
         GetComponent<Rigidbody2D>().velocity = 
             new Vector2(move * maxSpeed, GetComponent<Rigidbody2D>().velocity.y);
     }
 
     void JumpMechanic(){
 
         float restartMove = Input.GetAxis("Horizontal");
            float jumpDirectionX = Input.GetAxis("Horizontal");
 
            float chosenDirection = 10.0f;
            bool isChoosing = false;
 
            if(Input.GetButtonDown("Jump")){
                isChoosing = true;
            }
 
 
            do{
                 if( Input.GetButtonDown("Jump"))
                     GetComponent<Rigidbody2D>().velocity = new Vector2(0f, 0f);
                     
                 while( Input.GetButton("Jump") ){
                      //Jump Right
                     if( jumpDirectionX > 0  && Input.GetButton("Jump")){
                         Debug.Log("You Jumped Right.");
                         chosenDirection = 1.0f;
                     }
                     //Jump Left
                     else if( jumpDirectionX < 0 && Input.GetButton("Jump")){
                         Debug.Log("You Jumped Left.");
                         chosenDirection = -1.0f;
                     }
                     //Jump Up
                     else if( jumpDirectionX == 0 && Input.GetButton("Jump") ){
                         Debug.Log("You Jumped");
                         chosenDirection = 0f;
                     }
                     else{
                         Debug.Log("You're pressing nothing");
                         ;
                     }
                 }
                 
         }while( Input.GetButton("Jump") );
 
            if(Input.GetButtonUp("Jump")){
                GetComponent<Rigidbody2D>().velocity = 
                 new Vector2(restartMove * maxSpeed, GetComponent<Rigidbody2D>().velocity.y);
                 GetComponent<Rigidbody2D>().AddForce(new Vector2(chosenDirection, JumpForce));
            }
     }
 
     void PauseMechanic(){
         //Pause Feature (By pressing P)
         if (Input.GetKeyDown(KeyCode.P)){
             if (Time.timeScale == 1)
                  Time.timeScale = 0;
             else 
                  Time.timeScale = 1;
          }
     }
 
 }
Your answer
 
 
             Follow this Question
Related Questions
2D-Platformer wrong jumps 0 Answers
Help with enemy AI Please! (on 2D Platformer) 0 Answers
Help with Player Jumping Script In 2D Platformer (C#) 1 Answer
Help making my 2D platformer character jump? 0 Answers
How do I make my player jump at a fixed height, and only once until he touches the ground again? 1 Answer
 koobas.hobune.stream
koobas.hobune.stream 
                       
                
                       
			     
			 
                