- Home /
i'dont want double Jump
My character jump and is working, but if I press the Jump button several times not to jump infinitely.
think I figured out the mechanism of the flappy bird.
Code i have written is here :
can i help me.
using UnityEngine;
public class CharacterControllerScript : MonoBehaviour {
public float MaxSpeed = 10f;
bool facingRight = true;
bool grounded = false;
public Transform groundCheck;
float groundRadius = 0.2f;
public LayerMask whatIsGround;
public float jumpForce = 1000f;
public bool Jump = false;
private Animator anim;
// Use this for initialization
void Awake () {
anim = GetComponent<Animator>();
}
// Update is called once per frame
void FixedUpdate () {
grounded = Physics2D.OverlapCircle(groundCheck.position, groundRadius, whatIsGround);
anim.SetBool("Ground", grounded);
anim.SetFloat("Vspeed", GetComponent<Rigidbody2D>().velocity.y);
float Move = Input.GetAxis("Horizontal");
anim.SetFloat("Speed", Mathf.Abs(Move));
GetComponent<Rigidbody2D>().velocity = new Vector2(Move * MaxSpeed, GetComponent<Rigidbody2D>().velocity.y);
if (Move > 0 && !facingRight)
Flip();
else if (Move < 0 && facingRight)
Flip();
if (Jump) {
anim.SetBool("Ground", false);
GetComponent<Rigidbody2D>().AddForce(new Vector2(0f, jumpForce));
Jump = false;
}
}
void Update()
{
if (Input.GetButtonDown("Jump") && grounded)
Jump = true;
/*if (grounded && Input.GetKeyDown(KeyCode.Space))
{
anim.SetBool("Ground", false);
GetComponent<Rigidbody2D>().AddForce(new Vector2(0, jumpForce));
}*/
}
void Flip(){
facingRight = !facingRight;
Vector3 theScale = transform.localScale;
theScale.x *= -1;
transform.localScale = theScale;
}
}
Can you give us some debugs? Put some debug logs on both update functions and see if the problem isn't just about desync since you have code on functions which run at different times.
The code was right, I did not pay attention. I set the player would be under the layer "Player" in my GO and the variable layer$$anonymous$$ask i put all the layers "WhatIsGround" except the Layer$$anonymous$$ask "Player". It worked. thank you so much
Answer by Hjalte · Sep 25, 2014 at 10:14 AM
It all looks like it should work but maybe its the Jump-bool that bugs out. I've had that happen alot so heres what I did for my jumping:
if (grounded && Input.GetKeyDown(KeyCode.Space)) { rigidbody2D.AddForce(new Vector2(0, jumpForce)); }
maybe you could use that. And you should probably not capitalize the first letter of your bool.
I removed the direct method and put to the test, actually worked very well. thank you so much ;)
my version of Unity is 5, the code looked like this
using UnityEngine;
public class CharacterControllerScript : $$anonymous$$onoBehaviour
{
public float $$anonymous$$axSpeed = 10f;
bool facingRight = true;
bool grounded = false;
public Transform groundCheck;
float groundRadius = 0.2f;
public Layer$$anonymous$$ask whatIsGround;//Had not paid attention to my logic =(
public float jumpForce = 1000f;
private Animator anim;
// Use this for initialization
void Awake()
{
anim = GetComponent<Animator>();
}
// Update is called once per frame
void FixedUpdate()
{
grounded = Physics2D.OverlapCircle(groundCheck.position, groundRadius, whatIsGround);
anim.SetBool("Ground", grounded);
anim.SetFloat("Vspeed", GetComponent<Rigidbody2D>().velocity.y);
float $$anonymous$$ove = Input.GetAxis("Horizontal");
anim.SetFloat("Speed", $$anonymous$$athf.Abs($$anonymous$$ove));
GetComponent<Rigidbody2D>().velocity = new Vector2($$anonymous$$ove * $$anonymous$$axSpeed, GetComponent<Rigidbody2D>().velocity.y);
if ($$anonymous$$ove > 0 && !facingRight)
Flip();
else if ($$anonymous$$ove < 0 && facingRight)
Flip();
}
void Update()
{
if (grounded && Input.Get$$anonymous$$eyDown($$anonymous$$eyCode.Space))
{
anim.SetBool("Ground", false);
GetComponent<Rigidbody2D>().AddForce(new Vector2(0, jumpForce));
}
}
void Flip()
{
facingRight = !facingRight;
Vector3 theScale = transform.localScale;
theScale.x *= -1;
transform.localScale = theScale;
}
}
Your answer
Follow this Question
Related Questions
About character doublejumping. 1 Answer
I need help with animations. 0 Answers
Jump is registered when falling of platform? 1 Answer