- Home /
Question by
InTheDarknesss · Sep 11, 2020 at 12:14 AM ·
double jump
How to change this to duble jump?
Hi I want to make a double jump script I made a GroundCheck so player only jump one time I made some resarch but still couldnt adding dobule jump code can u help me?,Hi I made a script and I add it GroundCheck but I dont know how can I add this double jump I resarch it but still couldnt do it can u help me?
using System.Collections; using System.Collections.Generic; using UnityEngine;
public class PlayerController : MonoBehaviour {
public float moveSpeed;
public float jumpForce;
public KeyCode left;
public KeyCode right;
public KeyCode jump;
public KeyCode throwBall;
private Rigidbody2D r2bd;
public Transform groundCheckPoint;
public float groundCheckRadius;
public LayerMask whatIsGround;
public bool isGrounded;
private Animator anim;
public GameObject snowBall;
public Transform throwPoint;
void Start()
{
r2bd = GetComponent<Rigidbody2D>();
anim = GetComponent<Animator>();
}
// Update is called once per frame
void Update()
{
isGrounded = Physics2D.OverlapCircle(groundCheckPoint.position, groundCheckRadius, whatIsGround);
if(Input.GetKey(left))
{
r2bd.velocity = new Vector2(-moveSpeed, r2bd.velocity.y);
}
else if(Input.GetKey(right))
{
r2bd.velocity = new Vector2(moveSpeed, r2bd.velocity.y);
}
else
{
r2bd.velocity = new Vector2(0, r2bd.velocity.y);
}
if(Input.GetKeyDown(jump) && isGrounded)
{
r2bd.velocity = new Vector2(r2bd.velocity.x, jumpForce);
}
if(Input.GetKeyDown(throwBall))
{
GameObject ballClone = (GameObject)Instantiate(snowBall, throwPoint.position, throwPoint.rotation);
ballClone.transform.localScale = transform.localScale;
anim.SetTrigger("Throw");
}
if(r2bd.velocity.x <0)
{
transform.localScale = new Vector3(-1,1,1);
}
else if(r2bd.velocity.x >0)
{
transform.localScale = new Vector3(1,1,1);
}
anim.SetFloat("Speed", Mathf.Abs(r2bd.velocity.x));
anim.SetBool("Grounded", isGrounded);
}
}
Comment
Answer by mbro514 · Sep 11, 2020 at 02:06 AM
Try this code:
private const int maxNumberOfJumps = 2;
private int jumpNumber;
void Update(){
if (Input.GetButtonDown(jump) && jumpNumber < maxNumberOfJumps)
{
r2bd.velocity = new Vector2(r2bd.velocity.x, jumpForce);
jumpNumber++;
}
if (Physics2D.OverlapCircle(groundCheckPoint.position, groundCheckRadius, whatIsGround))
{
jumpNumber = 0;
}
}
Your answer
Follow this Question
Related Questions
why will my jump animation only play on multi-jumps? 0 Answers
Double Jumping in C# 2 Answers
(Solved) Double jumping 3 Answers
Trouble with Double Jumping Under a Constant Force 2 Answers