En este momento estás viendo Unity 3d Cómo reiniciar un contador en un trampolín cuando dejas de saltar

 – Unity

Unity 3d Cómo reiniciar un contador en un trampolín cuando dejas de saltar – Unity

Unity 3d Cómo reiniciar un contador en un trampolín cuando dejas de saltar

– UnityAssets3Free

buenas , por aqui juansito y hoy os traigo
esta pregunta

Empecé a codificar con unity y C# hace una semana, así que discúlpeme si es una pregunta tonta.

Hice un trampolín en Unity, el jugador salta sobre él y hace rebotar al jugador más y más alto usando instrucciones if simples y un conteo de números enteros.

Mi script playerController está definido en unity inspector. El trampolín funciona según lo previsto, funciona bien.

Sin embargo, me gustaría que el jugador restableciera su impulso después de bajarse del trampolín y tocar el suelo.

Actualmente, después de bajarse del trampolín y volver a subirse a él, están saltando tan alto como cuando lo dejaron. Por lo tanto, el número entero de conteo debe restablecerse.

Pensé en hacer esto con una simple verificación de la función «en tierra» de los jugadores y, si es cierto, restablecer los trampolines jumpCount a 0.

Pero esto no está funcionando. No tengo ni idea de porqué. A mí me parece que debería. isgrounded se evalúa como verdadero, pero «else if (playerFP.groundCheck == true)» no se activa.

Aquí está mi código:

public class Trampoline : MonoBehaviour

    public PlayerMovement1stPerson playerFP;
    [SerializeField] int jumpCount = 0;

    private void OnTriggerEnter(Collider collision) 
     
        if (jumpCount == 0 && collision.gameObject.tag == "Player" )
        
            Debug.Log("Bounce 1 activated");
            playerFP.velocity.y = 5;
            jumpCount ++;
        

        else if (jumpCount == 1 && collision.gameObject.tag == "Player")
        
            playerFP.velocity.y = 10;
            jumpCount ++;
        
        
        else if (jumpCount == 2 && collision.gameObject.tag == "Player")
        
            playerFP.velocity.y = 15;
            jumpCount ++;
        

        else if (jumpCount >= 3 && collision.gameObject.tag == "Player")
        
            Debug.Log("Max Bounce");
            playerFP.velocity.y = 15;
        
        
        else if (playerFP.groundCheck == true)
        
            Debug.Log("Bounces reset");
            jumpCount = 0;
        
    

Realmente aprecio cualquier consejo.

1 respuesta 1

Tu salto (y el código de verificación del suelo) se está ejecutando dentro del trampolín OnTriggerEnter método. Esto significa que la verificación SÓLO ocurrirá cuando el jugador ingrese al gatillo del trampolín, no cuando el jugador aterrice en cualquier terreno.

Mueva el check if fuera del OnTriggerEnter método. O Update() El método dentro del script Trampoline funcionaría, pero la implementación más limpia sería almacenar la información de salto dentro del reproductor en lugar de cada instancia de trampolín. (Esto también permite que un jugador salte sobre varios trampolines sin perder altura entre ellos)

nota: si aun no se resuelve tu pregunta por favor dejar un comentario y pronto lo podremos de nuevo , muchas gracias

por hoy,espero que te funcione

Deja una respuesta