Question by
ABcodes · Oct 29, 2017 at 07:12 PM ·
jumpif statement
how to reset jump everytime it hits ground not when it is constantly on the ground
so basically my code resets the jumping ability once the player is constantly on the ground but i want it to reset every single time it hits the ground not when it is on the ground itself since my player has a bounce ability it doesn't stay on the ground it hits the ground every 2-3 seconds so the player ends up never being able to jump....
using System.Collections; using System.Collections.Generic; using UnityEngine;
public class PlayerController : MonoBehaviour {
public float movespeed;
public float speedmultiplier;
public float speedincreasemilestone;
public float jumpforce;
public bool grounded;
public LayerMask whatIsGround;
public float jumptime;
public Transform groundcheck;
public float groundcheckradius;
public GameManager thegamemanager;
private bool candoublejump;
private float speedincreasemilestonestore;
private float movespeedstore;
private float speedmilestonecountstore;
private float speedmilestonecount;
private Rigidbody2D myRigidbody;
//private Collider2D myCollider; private float jumptimecounter;
// Use this for initialization
void Start () {
myRigidbody = GetComponent<Rigidbody2D>();
// myCollider = GetComponent<Collider2D>();
jumptimecounter = jumptime;
speedmilestonecount = speedincreasemilestone;
movespeedstore = movespeed;
speedmilestonecountstore = speedmilestonecount;
speedincreasemilestonestore = speedincreasemilestone;
}
// Update is called once per frame
void Update () {
grounded = Physics2D.OverlapCircle(groundcheck.position, groundcheckradius, whatIsGround);
if(transform.position.x > speedmilestonecount)
{
speedmilestonecount += speedincreasemilestone;
speedincreasemilestone = speedincreasemilestone * speedmultiplier;
movespeed = movespeed * speedmultiplier;
}
myRigidbody.velocity = new Vector2(movespeed, myRigidbody.velocity.y);
if (Input.GetKeyDown(KeyCode.Space) || Input.GetMouseButtonDown(0) )
{
if (grounded)
{
myRigidbody.velocity = new Vector2(myRigidbody.velocity.x, jumpforce);
candoublejump = true;
}
if (!grounded && candoublejump)
{
myRigidbody.velocity = new Vector2(myRigidbody.velocity.x, jumpforce);
candoublejump = false;
jumptimecounter = jumptime;
}
}
if (Input.GetKey(KeyCode.Space) || Input.GetMouseButton(0))
{
if(jumptimecounter > 0)
{
myRigidbody.velocity = new Vector2(myRigidbody.velocity.x, jumpforce);
jumptimecounter -= Time.deltaTime;
}
}
if(Input.GetKeyUp (KeyCode.Space) || Input.GetMouseButtonUp(0))
{
jumptimecounter = 0;
}
if(grounded)
{
jumptimecounter = jumptime;
candoublejump = true;
}
}
void OnCollisionEnter2D(Collision2D other)
{
if (other.gameObject.tag == "killbox")
{
thegamemanager.RestartGame();
movespeed = movespeedstore;
speedmilestonecount = speedmilestonecountstore;
speedincreasemilestone = speedincreasemilestonestore;
}
}
}
Comment
Your answer