[RESOLU] [DB] Ne sauter qu'une fois

Pour les scripts écrits en C#
Règles du forum
Merci de respecter la NOMENCLATURE suivante pour vos TITRES de messages :

Commencez par le niveau de vos scripts
DB = Débutant
MY = Moyen
CF = Confirmé

Puis le domaine d'application
-RS = Réseau
-AL = Algorithmie

Exemple :

[DB-RS] Mouvement perso multijoueur
Taekko
Messages : 2
Inscription : 01 Mai 2019 23:04

[RESOLU] [DB] Ne sauter qu'une fois

Message par Taekko » 01 Mai 2019 23:27

Bonjour,
Aujourd'hui j'ai essayer de créer mon premier "jeux" sur unity en suivant ce tuto : https://www.youtube.com/watch?v=_KQFhMpV-Do

C'est la première fois que je fais de la programmation au temps dire que mon niveau est extrémement bas
Je suis au time code : 24:10 (j'ai aussi fait l'étape d'après en mettant le tag de la plateforme en Ground) j'ai excatement le même script que lui mais le problème c'est que mon personnage ne saute plus du tout.
Voici le code :

Code : Tout sélectionner

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

public class CharacterBehaviors : MonoBehaviour
{
    public Rigidbody2D rb;
    public float vitesse;
    public float maxJump;
    private bool isGrounded = false;
    // Start is called before the first frame update
    void Start()
    {
        rb.velocity += new Vector2(vitesse, 0);



    }

    // Update is called once per frame
    void Update()
    {
        if(Input.GetKeyDown("space") && isGrounded)
        {
            Jump();

        }
    }
    
    void Jump ()
    {
        rb.velocity += new Vector2(0, maxJump);
    }

    private void OnCollisionEnter2D(Collision2D col)
    {
        if (col.gameObject.CompareTag("Ground"))
        {
            isGrounded = false;
        }

    }
}]

Si quelqu'un pourrait m'aider ce serait sympa :langue3:

PS: Ca fait 1h30 que je cherche j'ai regardé plusieurs tuto ect... mais je n'y arrive toujours pas c'est pour ca que je me permet de poster ce topic
Dernière édition par Taekko le 02 Mai 2019 18:10, édité 1 fois.

Moi 1971
Messages : 727
Inscription : 29 Sep 2015 13:38

Re: [DB] Ne sauter qu'une fois

Message par Moi 1971 » 02 Mai 2019 10:42

Bonjour,
je pense que votre problème vient que la valeur du booléen isGrounded reste toujours à "false" et ne passe jamais à "true".
En effet le saut du personnage est conditionné par le fait que la touche "space" soit appuyée ET que isGrounded soit égal à "true"

Code : Tout sélectionner

if(Input.GetKeyDown("space") && isGrounded)
        {
            Jump();
 }
Le booléen isGrounded est initialisé "au départ" à "false" (pour dire => Le personnage ne touche pas le sol) et devrait logiquement passer à "true" quand il touche le sol. Et ça, ça devrait se faire dans la fonction "OnCollisionEnter2D".
A mon avis il faut modifier cette fonction comme ceci :

Code : Tout sélectionner

private void OnCollisionEnter2D(Collision2D col)
    {
        if (col.gameObject.CompareTag("Ground"))
        {
            isGrounded = true;
        }

    }
J'ai pas vu la vidéo... Mais après logiquement il faudra modifier le code suivant pour pas que le personnage puisse sauter à l'infini alors qu'il est en l'air, puis après implémentation du double saut avec un booléen etc... ;-)

Code : Tout sélectionner

if(Input.GetKeyDown("space") && isGrounded)
        {
            isGrounded = false;
            Jump();

        }

Taekko
Messages : 2
Inscription : 01 Mai 2019 23:04

Re: [DB] Ne sauter qu'une fois

Message par Taekko » 02 Mai 2019 18:09

Merci de ta réponse !
En effet c'était bien cela merci de m'avoir aidée.
Bonne continuation :hello:

Répondre

Revenir vers « (C#) CSharp »