- Home /
 
 
               Question by 
               DilipRamirez · Nov 02, 2013 at 06:20 PM · 
                2dphysicsjump  
              
 
              Incremental jump while pressing Jump button
Hey everyone! I'm doing a 2D platformer (not 2.5), i'm trying to do a Super Meat Boy kind-of jump, where the player jumps higher while in air pressing the jump button up to a maxHeightJump... I'm settings 3 variables (jumpHeight - which is the final jump force, maxHeightJump and incrementalJumpHeight which is set to 4), doing jumpHeight + IncrementalJumpHeight while GetButton("Jump"), but the player falls at the beginning and then starts jumping again ... how can I do it ? Here's my code so far:
 using UnityEngine;
 using System.Collections;
 
 [RequireComponent(typeof(PlayerPhysics))]
 public class PlayerController : MonoBehaviour {
     
     
     //Player Handling
     public float gravity = 20;
     public float speed = 8;
     public float acceleration = 30;
     public float incrementalJumpHeight = 4;
     public float jumpHeight = 0;
     public float maxJumpHeight = 20;
     
     private float currentSpeed;
     private float targetSpeed;
     private Vector2 amountToMove;
     
     private PlayerPhysics playerPhysics;
     
     // Use this for initialization
     void Start () {
         playerPhysics = GetComponent<PlayerPhysics>();
     }
     
     // Update is called once per frame
     void Update () {
         
         if(playerPhysics.movementStopped)
         {
             targetSpeed = 0;
             currentSpeed = 0;
         }
         
         // Input
         targetSpeed = Input.GetAxisRaw("Horizontal") * speed;
         currentSpeed = Mathf.MoveTowards(currentSpeed, targetSpeed, speed);
         
         if(playerPhysics.grounded)
         {
             
             amountToMove.y = 0;
             //jumpHeight = 0;
             // Jump
             
             if(Input.GetButton("Jump"))
             {
                 Debug.Log("We are jumping! YAY!!");
                 if(jumpHeight < maxJumpHeight) {
                     Debug.Log("We are adding "+incrementalJumpHeight+" to our jump, resulting in "+jumpHeight);
                     jumpHeight += incrementalJumpHeight + Time.deltaTime;
                 } else {
                     
                     jumpHeight = 0;
                     
                 }
                 if(Input.GetButtonUp("Jump"))
                 {
                     amountToMove.y = jumpHeight;
                 }
                 
             } else {
                 jumpHeight = 0;    
             }
             
         }
         
         amountToMove.x = currentSpeed;
         amountToMove.y -= gravity * Time.deltaTime; 
         playerPhysics.Move(amountToMove * Time.deltaTime);
     }
 }
 
 
              
               Comment
              
 
               
              Your answer
 
             Follow this Question
Related Questions
2D (With Planes) Jump Script 0 Answers
Rigidbody2d not falling once in the air 1 Answer
Sphere Goes Crazy 3 Answers
How do i incorporate a double jump ingame? 1 Answer
2d grounded check problem? 3 Answers