- Home /
Why Won't it jump?
Player won't jump. Unity 5. using UnityEngine; using System.Collections;
public class SimplePlatformController : MonoBehaviour {
[HideInInspector] public bool facingRight = true;
[HideInInspector] public bool jump = false;
public float moveForce = 365f;
public float maxSpeed = 5f;
public float jumpForce = 1000f;
public Transform groundCheck;
private bool grounded = false;
private Animator anim;
private Rigidbody2D rb2d;
// Use this for initialization
void Awake ()
{
anim = GetComponent<Animator>();
rb2d = GetComponent<Rigidbody2D>();
}
// Update is called once per frame
void Update ()
{
grounded = Physics2D.Linecast(transform.position, groundCheck.position, 1 << LayerMask.NameToLayer("Ground"));
if (Input.GetButtonDown("Jump") && grounded)
{
jump = true;
}
}
void FixedUpdate()
{
float h = Input.GetAxis("Horizontal");
anim.SetFloat("Speed", Mathf.Abs(h));
if (h * rb2d.velocity.x < maxSpeed)
rb2d.AddForce(Vector2.right * h * moveForce);
if (Mathf.Abs (rb2d.velocity.x) > maxSpeed)
rb2d.velocity = new Vector2(Mathf.Sign (rb2d.velocity.x) * maxSpeed, rb2d.velocity.y);
if (h > 0 && !facingRight)
Flip ();
else if (h < 0 && facingRight)
Flip ();
if (jump)
{
anim.SetTrigger("Jump");
rb2d.AddForce(new Vector2(0f, jumpForce));
jump = false;
}
}
void Flip()
{
facingRight = !facingRight;
Vector3 theScale = transform.localScale;
theScale.x *= -1;
transform.localScale = theScale;
}
}
You could put a Debug.Log inside if(jump) so that we would first know if that part of the script even gets called while jumping. That way we know that for examle input and grounded are working as intended.
Answer by elelec · May 14, 2015 at 03:35 PM
Maybe the animation doesn't get recognised and, if it doesn't, it will prevent your whole event from firing sometimes. Try making it like this:
if (jump)
{
rb2d.AddForce(new Vector2(0f, jumpForce));
anim.SetTrigger("Jump");
jump = false;
}
and see if your character will jump and if the animation will play
Your answer
Follow this Question
Related Questions
Dash in movement direction, not in forward direction 0 Answers
How to prevent player from moving in air while jumping in place?? 0 Answers
Player cannot jump 0 Answers
[C#] JUMP - What i must add to this code to jump? :> 1 Answer
Player wont jump (visual script),2d player does not jump (visual script) 1 Answer