- Home /
Why are the player jumps lagging?
Hello! I was making a double jump script. It worked out fine but the character doesn't jump sometimes. Why is that?
here's the script:-(ignore the attack animation lines)
using UnityEngine; using System.Collections;
public class PlayerControls : MonoBehaviour {
Rigidbody rb;
public float jumpSpeed = 10f;
private bool IsGrounded = true;
private bool dj;
public float jumpHeight;
Animator anim;
void Start(){
anim = GetComponent<Animator> ();
rb = GetComponent<Rigidbody> ();
}
void FixedUpdate ()
{
if (Input.GetKeyDown (KeyCode.LeftControl)) {
anim.SetBool ("attack", true);
} else {
anim.SetBool ("attack", false);
}
if (IsGrounded) {
dj = false;
}
if (Input.GetKeyDown (KeyCode.Space) && IsGrounded == true ) {
rb.velocity = new Vector3 (0, jumpSpeed, 0);
}
if (Input.GetKeyDown (KeyCode.Space) && !IsGrounded && !dj) {
dj = true;
rb.velocity = new Vector3 (0, jumpHeight, 0);
}
float moveH = Input.GetAxis ("Horizontal");
Vector3 movement = new Vector3 (moveH * 20, rb.velocity.y, 0f);
rb.velocity = movement;
if (moveH < 0) {
rb.rotation = Quaternion.Euler (0, 180, 0);
}
if (moveH > 0 && transform.eulerAngles.y == 180) {
rb.rotation = Quaternion.Euler (0, 0, 0);
}
}
void OnCollisionEnter(Collision other){
if (other.gameObject.tag == "Ground") {
IsGrounded = true;
}
}
void OnCollisionExit (Collision other)
{
if (other.gameObject.tag == "Ground") {
IsGrounded = false;
}
}
}
PS: This is a 2.5 game ,so that's why I'm using the quaternions for flipping the character.
Answer by DasNanda · Oct 03, 2017 at 02:01 PM
Maybe it's because of the way you are assigning the velocity. I assume you are using Unity's Physics for gravity. Have you tried using AddForce? Otherwise, you could just try adding the jumpSpeed to the velocity instead of assigning it, since the gravity will take care of it anyway. So I would do either this:
rb.velocity += new Vector3(0, jumpSpeed, 0);
or this:
rb.AddForce(new Vector3(0, jumpSpeed, 0));
Thanks! It is a lot better now. I use velocity ins$$anonymous$$d of AddForce because it looks more precise .I use AddForce on characters such as a ball or car.