Estoy tratando de saltar con un cuerpo rígido y, a veces, mi salto es bajo como si se apilara en algo y, a veces, es alto. ¿Por qué cambia?
gracias por las respuestas
Mi código:
private void Update() { if (Input.GetKeyDown(KeyCode.Space) && isGrounded) Jump(); } private void FixedUpdate() { isGrounded = Physics.CheckSphere(groundCheck.position, 0.2f, groundMask); } private void Jump() { rigidbody.AddForce(Vector3.up * 20, ForceMode.VelocityChange); isGrounded = false; }En primer lugar, todos los cálculos físicos relacionados con Rigidbody (como el de su Jump() ) siempre deben realizarse dentro de la función FixedUpdate() de acuerdo con la documentación de Unity aquí . FixedUpdate() se ejecuta a una velocidad fija predeterminada cada 0,02 segundos, mientras que Update() se ejecuta una vez por cuadro, lo que sería diferente para cada máquina en la que se ejecuta.
En lugar de reinventar la rueda por ti, realicé una búsqueda y encontré el siguiente código en los foros de Unity, aquí , que debería ayudarte a comprender mejor tu problema. Usé el código allí y lo edité para su escenario.
private bool shouldJump = false; void Update() { if (Input.GetKeyDown(KeyCode.Space) && isGrounded) { shouldJump = true; } } void FixedUpdate() { // Check for jump if (isGrounded && shouldJump) { shouldJump = false; rigidbody.AddForce(Vector3.up * 20.0f, ForceMode.VelocityChange); } }