Necesito que salte una vez y no infinitamente

Hola necesito que alguien me ayude ya que no puedo hacer que mi sphere deje de saltar muchas veces quiero que solo salte una vez en el aire y no si aprieto la barra salga volando , gracias

este es el codigo:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class JumpPower : MonoBehaviour {
public float Jumpv= 0.4f;
public bool jump;
Rigidbody rb;

void Start () {
	rb = GetComponent<Rigidbody>();
}


void Update () {
	if (Input.GetKeyDown (KeyCode.Space)) {
		jump = true;
	
	}

}
void FixedUpdate()
{
if (jump){
rb.AddForce (Vector2.up * Jumpv, ForceMode.Impulse);
jump = false;

		}

	}
}

Hola,

Hay diferente soluciones, puede usar un raycast o verificar las colisiones con el suelo (para saber si el Game Object toca el suelo.

Aquí es un pseudo-código que no he testado, pero la idea principal esta allí !

BoxCollider m_boxCollider; // Referencia al collider del Game Object
RigidBody m_rigidBody;
bool isGrounded; // Boolean para ser seguro que tocamos el suelo

// La metoda que llamamos para saltar
public void Jump()
{
    m_isGrounded = false;
    m_rigidBody.AddForce(Vector2.up * Jumpv, ForceMode.Impulse);
}

// Verificamos las colisiones
void OnCollisionEnter(Collision other)
{
    // Hemos puesto un tag "Ground" sobre el suelo
    if(other.gameObject.CompareTag("Ground"));
        m_isGrounded = true;
}

void Start ()
{
    m_boxCollider = GetComponent<BoxCollider>();
    m_rigidBody = GetComponent<Rigidbody>();
    m_isGrounded = true; // Si empezamos tocando al suelo
}

void Update ()
{
    // Aquí es importante de verificar también si estamos tocando el suelo,
   // sino, el Game Object puede saltar a cualquier momento !
    if(Input.GetKeyDown(KeyCode.Space) && m_isGrounded == true)
        Jump();
}

Saludos :wink:

aqui esta un tutorial para declarar el personaje grounded esta en español echo por mi espero te sirva