- Home /
 
Player Jump via Transform on Input Space
Hey all,
So I'm trying to get a simple Jump button working. I have two variables, a gravity and a jumpHeight. And an isGrounded bool.
The problem is that when I press Spacebar, the player does not come back down. He transforms up (I'm still working on smoothness) instantly 4 units, but stays there.
     public float forwardSpeed = 10.0f;
     public float backwardSpeed = -4.0f;
     public float sidewaysSpeed = 5.0f;
     /*public float turningSpeed, unsure, but you can
     handle left and right with positive and negative*/
     
     public bool isGrounded = true;
     public float jumpHeight = 4.0f;
     public float airAcceleration;
     public float gravity = -2.0f;
 
     
     
     
     void Update () {
         
     Vector3 forwardDirection =  new Vector3(0,0,forwardSpeed * Time.deltaTime);
     Vector3 backwardDirection = new Vector3(0,0,backwardSpeed * Time.deltaTime);
     Vector3 sidewaysDirection = new Vector3(sidewaysSpeed * Time.deltaTime,0,0);
     
     Vector3 jumpDirection = new Vector3(0,jumpHeight,0);
     Vector3 downForce = new Vector3(0,gravity,0);
                 
         
         //Player Movement Input
         if(Input.GetKey(KeyCode.W)){
             transform.Translate(forwardDirection);
         }
         if(Input.GetKey(KeyCode.S)){
             transform.Translate(backwardDirection);
         }
         
         if(Input.GetKey(KeyCode.A)){
             transform.Translate(-sidewaysDirection);
         }
         
         if(Input.GetKey(KeyCode.D)){
             transform.Translate(sidewaysDirection);
         }
         
         if(Input.GetKeyDown(KeyCode.Space)){
             transform.Translate(jumpDirection);
             isGrounded = false;
         }
         //End of Player Movement Input
         
         
         //Gravity
         if(isGrounded == false)
         {
                 transform.Translate(downForce * Time.deltaTime);
                 isGrounded = true;
             
         }
         
     }
 
 
              Answer by Vonni · Dec 31, 2013 at 06:12 AM
Hey there ninja
isGrounded = true;
right after you start to translate it downwards is your problem
transform.Translate(downForce * Time.deltaTime); <-- only executes 1 frame per jump which results in like a 0.003 movement downwards.
Why are you moving a character like this by the way. This is usually not how you would control a character
Answer by Ethaninja · Dec 31, 2013 at 07:32 AM
Hey Vonni, thanks!
I'm controlling the character this way because I want strafing speed and backwards speed to be different that forward speed, and I am unsure of how else to do that haha.
Your answer
 
             Follow this Question
Related Questions
Multiple Cars not working 1 Answer
Help In Making a SphereCast for 3D Tire! Working RayCast Script included! 0 Answers
I need help with animations. 0 Answers
2D car brakes help??? 1 Answer
Why doesn't this do anything? 1 Answer