Only jumping once
Hey! I'm having issues on my code I recently started programming in Unity, and my player is only jumping once. After first jump, they can only walk, no matter how many times I press the spacebar.
Here is my code so far: using System.Collections; using System.Collections.Generic; using UnityEngine;
public class Player : MonoBehaviour
{
public float Speed;
public float JumpForce;
public bool isJumping;
public bool doubleJump;
private Rigidbody2D rig;
private Animator anim;
// Start is called before the first frame update
void Start()
{
rig = GetComponent<Rigidbody2D>();
anim = GetComponent<Animator>();
}
// Update is called once per frame
void Update()
{
Move();
Jump();
}
void Move()
{
Vector3 movement = new Vector3(Input.GetAxis("Horizontal"),0f, 0f);
transform.position += movement * Time.deltaTime * Speed;
if (Input.GetAxis("Horizontal") > 0f) {
anim.SetBool("walk", true);
transform.eulerAngles = new Vector3(0f, 0f, 0f);
}
if (Input.GetAxis("Horizontal") < 0f)
{
anim.SetBool("walk", true);
transform.eulerAngles = new Vector3(0f, 180f, 0f);
}
if (Input.GetAxis("Horizontal") == 0f)
{
anim.SetBool("walk", false);
}
}
void Jump()
{
if (Input.GetButtonDown("Jump"))
{
if (!isJumping)
{
rig.AddForce(new Vector2(0f, JumpForce), ForceMode2D.Impulse);
doubleJump = true;
anim.SetBool("jump", true);
}
else
{
if (doubleJump) {
rig.AddForce(new Vector2(0f, JumpForce), ForceMode2D.Impulse);
doubleJump = false;
anim.SetBool("jump", false);
}
}
}
}
void OnCollissionEnter2D(Collision2D collision)
{
if(collision.gameObject.layer == 8)
{
isJumping = false;
}
}
void OnCollissionExit2D(Collision2D collision)
{
if (collision.gameObject.layer == 8)
{
isJumping = true;
}
}
}
Comment
Your answer
Follow this Question
Related Questions
Need help with Character Jump! 0 Answers
Where is the Jump Input in the default 2d platform controller? 0 Answers
Help with jumping script 2 Answers
Jumping for longer 2d game 0 Answers