Empêcher le double saut

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
Xariien
Messages : 5
Inscription : 29 Mai 2016 18:58

Empêcher le double saut

Message par Xariien » 29 Mai 2016 22:51

Avant de commencer je m’excuse du double post, mais je ne trouve pas la fonction supprimer sur l'autre désolé.

Bonsoir,

j'ai un problème avec mon script pour empêcher de double saut. il s'agit de détecter si mon personnage touche le sol oui ou non, si oui il peut re-sauter. j'ai commencer ça avec une valeur boolean.

Code : Tout sélectionner

public class uh : MonoBehaviour {

    public bool saut = true; //Empecher le double saut
    
	// Use this for initialization
	void Start () {
        
	
	}

    // Update is called once per frame
    void Update() {
        if (Input.GetKeyDown(KeyCode.UpArrow) && (saut))
        { GetComponent<Rigidbody2D>().AddForce(Vector3.up*400);
            saut = false;
        }


        // Sauter

        if (Input.GetKey(KeyCode.RightArrow))
            transform.Translate(0.1f, 0, 0);
        // Marcher à droite

        if (Input.GetKey(KeyCode.LeftArrow))
            transform.Translate(-0.1f, 0, 0);
        // Marcher à gauche

        
    }

}

Voici mon code, je n'arrive pas à la terminer :snif:

Merci d'avance

Avatar de l’utilisateur
Titan
Messages : 582
Inscription : 12 Sep 2011 13:54
Contact :

Re: Empêcher le double saut

Message par Titan » 29 Mai 2016 23:21

C'est un sujet vaste, avec de nombreuse méthode, qui ont été traité dans de nombreux sujet (raycast vers le bas, détection de collision avec vérification de la normal de contact, etc). Si après avoir chercher tu une question plus précise n'hésite pas. ;-)

Tu peux éditer un poste (ou le supprimer) en haut à droite du message
____________________________________________
Hop Boy

Xariien
Messages : 5
Inscription : 29 Mai 2016 18:58

Re: Empêcher le double saut

Message par Xariien » 29 Mai 2016 23:27

Merci, je reviendrai surement vers vous ^^

Xariien
Messages : 5
Inscription : 29 Mai 2016 18:58

Re: Empêcher le double saut

Message par Xariien » 30 Mai 2016 00:21

ça m’énerve, je trouve pas ce que je cherche, je veux juste une ligne qui dit :

Si la boxcollider2D touche le sol alors la valeur saut = true.

je trouve rien de cela, après je débute il est normal que je comprenne rien ahah

merci

Avatar de l’utilisateur
Solup
Messages : 249
Inscription : 20 Mars 2013 18:41
Localisation : Toulouse (31)

Re: Empêcher le double saut

Message par Solup » 31 Mai 2016 16:00

Tu travailles sur Unity3D, tu cherches à détecter que ton boxcollider est au sol (grounded).

J'ai simplement tapé "unity3d boxcollider grounded" et premier résultat:
http://answers.unity3d.com/questions/57 ... ction.html
Et t'en a des dizaines, pour ne pas dire des centaines de messages qui abordent ces sujets.

Comme l'expliquait Titan, tu as de nombreuses manière de faire, avec notamment le raycast ou l'ajout d'un trigger sur les pieds de ton personnage pour détecter la collision avec le sol. Toutes ces méthodes sont détaillées un peu partout sur le web, maintenant à toi de les comprendre et de les mettre en pratique dans ton cas de figure.
je trouve rien de cela, après je débute il est normal que je comprenne rien ahah
Effectivement, c'est normal de galérer lorsque l'on commence, mais tu as la chance de coder sur Unity, le moteur de jeu le plus documenté à l'heure actuelle, donc profite en! Apprends à effectuer des recherches et trouves les solutions sur des forums, car clairement, la majeures parties des problèmes "standards" comme le tiens ont déjà été abordé de nombreuses fois.
Si tu souhaites apprendre, il est important de commencer par apprendre à chercher les solutions avant de demander de l'aider en espérant que quelqu'un résolve tes problèmes à ta place ;)

Bon courage.

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6243
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: Empêcher le double saut

Message par boubouk50 » 31 Mai 2016 17:09

Ce sujet a été répondu ET résolu de nombreuses fois sur ce forum même:
Mots clés: Grounded, isGrounded, saut plateforme (peut-être), saut collider, collision sol, etc.
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation

Xariien
Messages : 5
Inscription : 29 Mai 2016 18:58

Re: Empêcher le double saut

Message par Xariien » 31 Mai 2016 18:10

Bonsoir, finalement j'ai passé ma soirée à chercher une solution. Et devinez quoi, j'ai trouvé. Un avis ? il y a surement plus simple mais bon.

Code : Tout sélectionner

public class uh : MonoBehaviour {

    public bool saut = true; //Empecher le double saut                         

    void Start()
    {


    }

    void OnCollisionEnter2D(Collision2D coll)
    {   if (coll.collider)
            saut = true;

    }

    // Update is called once per frame
    void Update() {
        if (Input.GetKeyDown(KeyCode.UpArrow) && (saut))
        {
           GetComponent<Rigidbody2D>().AddForce(Vector2.up* 300);
            saut = false;
            // Sauter
        } 

        if (Input.GetKey(KeyCode.RightArrow))
            transform.Translate(Time.deltaTime * 10.5f, 0, 0);
        // Marcher à droite

        if (Input.GetKey(KeyCode.LeftArrow))
            transform.Translate(-Time.deltaTime * 10.5f, 0, 0);
        // Marcher à gauche

        print("Vie : " + saut); 
        // TEST
    }

}

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6243
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: Empêcher le double saut

Message par boubouk50 » 01 Juin 2016 09:55

Code : Tout sélectionner

 void OnCollisionEnter2D(Collision2D coll)
    {   if (coll.collider)
            saut = true;

    }
Cela signifie que lorsque tu entre en collision avec n'importe quel collider, tu es considéré comme au sol donc que tu peux sauter. Donc, tu peux sauter lorsque tu touches un ennemi en l'air par exemple, un mur, tout ce qui utilise un collider. Ce serait plus judicieux te tester si la collision vient d'un objet tagué "sol" par ex et par le bas.
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation

Répondre

Revenir vers « (C#) CSharp »