- Home /
 
Booleans are not working
i´m don´t know what i´m doing bad, please help, i´m really tired from finding the problem, i´m tryin to make double jump.
 using UnityEngine;
 using System.Collections;
 
 
 
 
 public class asd : MonoBehaviour {
     public bool grounded;
     public bool firstJump;
     public bool secondJump;
     
     public float firstJumpForce;
     public float secondJumpForce;
 
     // Use this for initialization
     void Start () {
         grounded = false;
         firstJump = false;
         secondJump = false;
     }
     
     // Update is called once per frame
     void Update () {
         if (grounded) 
             secondJump = false;
         if (Input.GetKey(KeyCode.W)){
             rigidbody2D.AddForce (new Vector2 (0, firstJumpForce));
         }
         if (Input.GetKey(KeyCode.W) && !grounded && !secondJump) {
             rigidbody2D.AddForce (new Vector2 (0, secondJumpForce));
             secondJump = true;
         }
     }
       void FixedUpdate (){
                
         movex = Input.GetAxis ("Horizontal");
         movey = Input.GetAxis ("Vertical");
         rigidbody2D.velocity = new Vector2(movex * Speed, rigidbody2D.velocity.y);
 
     }
     void OnCollisionEnter2D(Collision2D coll){
         if (coll.gameObject.tag == "Ground"){
             grounded = true;
             firstJump = true;
             secondJump = false;
             
             
         }
     }
     void OnCollisionExit2D(Collision2D coll)
         if (coll.gameObject.tag == "Ground"){
             grounded = false;
             firstJump = false;
             
         }
     }
 
 
              Use Debug.Log to find out what all your values are, or put then in a GUI to see them in realtime.
Answer by fafase · Feb 06, 2015 at 07:24 AM
Add an empty game object to your character at foot position. Then use:
http://docs.unity3d.com/ScriptReference/Physics2D.OverlapCircle.html
using that object position for center.
If the cast returns something, and it is the ground, you are grounded.
 void FixedUpdate()
 {
     bool isGrounded = Physics2D.OverlapCircle(position, 0,5f, groundLayer);
     if(jumpInput && isGrounded == true)
     {
           // AddForce upward
     }
     else if (jumpInput && isGrounded == false && doubleJump == false)
     {
           doubleJump = true;
          //AddForce upward
     }
     else if(isGrounded == true && doubleJump == true)
    {
         doubleJump = false;
    }
 }
 
               You can also watch :
http://unity3d.com/learn/tutorials/modules/beginner/2d/2d-controllers
Your answer
 
             Follow this Question
Related Questions
How can I edit this script to double jump? 0 Answers
Multiple Cars not working 1 Answer
Distribute terrain in zones 3 Answers
Character Jump Problem! 0 Answers
[C#] JUMP - What i must add to this code to jump? :> 1 Answer