[RESOLU] Timer avant de reprendre le jeu ?

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
Alexis.B
Messages : 31
Inscription : 17 Avr 2020 12:51

[RESOLU] Timer avant de reprendre le jeu ?

Message par Alexis.B » 23 Avr 2020 20:22

Bonjour,
je viens de créer un menu pause oui peut s'ouvrir avec "Echap" et se fermer avec soit "Echap", soit un clic gauche de la souris sur un bouton.
Le problème est que mon jeu se joue à la souris et lorsque je quitte le menu pause avec le clic de la souris, le timeScale repasse à 1 et ce clic déplace en même temps mon joueur.
J'aimerai donc faire un timer de 3s qui s'affiche à l'écran avant de reprendre, sauf que pendant le menu pause timeScale = 0, le timer que j'ai fait à besoin de l'écoulement du temps et si je repasse timeScale à 1 le timer fonctionne mais le jeux aussi..

Si ça peut aider, mon programme pour le menu pause :

Code : Tout sélectionner

public class PauseMenu : MonoBehaviour
{
    public GameObject ui;
    public GameManager gm;
    public GameObject timerPause;
    public float time = 0.01f;
    public float timeToCharge = 0.01f;
    public float timeCharging;
    public bool chargingOk;
    public void Update()
    {
        if (Input.GetKeyDown(KeyCode.Escape))
        {
            Toggle();
        }
    }

    public void Toggle()
    {
        ui.SetActive(!ui.activeSelf);

        if (ui.activeSelf)
        {
            Time.timeScale = 0f;
            gm.isInputEnabled = false;
        }
        else
        {
            Time.timeScale = 1f;
            timerPause.SetActive(true);
        }
    }
    public void Retry()
    {
        Toggle();
        SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex);
    }
    public void MainMenu()
    {
        Debug.Log("Chargement du menu ...");
    }
  
}
Le programme du timer :

Code : Tout sélectionner

public class TimerPauseMenu : MonoBehaviour
{
    public GameObject timer;
    public GameManager gm;
    public float time = 3f;
    public Text timerText;
    public int timeInt;

    public void Update()
    {
        timeInt = Mathf.RoundToInt(time);
        timerText.text = ("" + timeInt + "");
        if(time >= 0)
        {
            time -= Time.deltaTime;

        }
        else
        {
            gm.isInputEnabled = true;
            //Time.timeScale = 1f;
            timer.SetActive(false);
            
        }
    }
}
Merci d'avance pour votre aide :)

djulio74
Messages : 682
Inscription : 19 Déc 2009 22:55

Re: Timer avant de reprendre le jeu ?

Message par djulio74 » 23 Avr 2020 20:31

Pourquoi ne pas avoir une variable bool qui est True quand le menu pause est activé, et ne permettre les action du perso et autre que s'il est sur false.
Comme ça quand ta le menu actif, pas d'action sur le perso

______________________________________________________________
\_______________________ Impossible is nothing _______________________/

Alexis.B
Messages : 31
Inscription : 17 Avr 2020 12:51

Re: Timer avant de reprendre le jeu ?

Message par Alexis.B » 24 Avr 2020 11:03

djulio74 a écrit :
23 Avr 2020 20:31
Pourquoi ne pas avoir une variable bool qui est True quand le menu pause est activé, et ne permettre les action du perso et autre que s'il est sur false.
Comme ça quand ta le menu actif, pas d'action sur le perso
J'ai essayé, je pense que ce serait mieux que d'avoir un timer mais le problème c'est que lorsque je clique sur continuer, le clic ferme le menu pause et remet bien le jeu en route mais ce clique et aussi compté dans le jeu puisque le jeu est réactivé en même temps..

djulio74
Messages : 682
Inscription : 19 Déc 2009 22:55

Re: Timer avant de reprendre le jeu ?

Message par djulio74 » 24 Avr 2020 12:50

C'est pas normal, si au moment où tu clique sur le bouton pour sortir du menu tu passe le bool à false, et que dans le script du perso il y a une condition que si ton bool est True il ne se passe rien, je vois pas ce qui pose soucis.
Ta variable bool est-elle bien sur True pendant le menu ?
Comment applique tu la condition du menu dans le script du perso ?
Tu dois avoir un soucis quelque part, d'ordre d'application des fonctions et changement de variable..

______________________________________________________________
\_______________________ Impossible is nothing _______________________/

Avatar de l’utilisateur
Aelhan
Messages : 124
Inscription : 11 Déc 2019 23:00

Re: Timer avant de reprendre le jeu ?

Message par Aelhan » 24 Avr 2020 14:22

Et si tu fais une coroutine qui se lance quand tu fermes ton ton menu ? Ta coroutine attendrait 3s avant de remettre ton bool sur true (même si 0.1s semble très suffisant pour l'usage que tu décris)
Celui qui pose une question risque cinq minutes d'avoir l'air bête.
Celui qui ne pose pas de question restera bête toute sa vie.

Alexis.B
Messages : 31
Inscription : 17 Avr 2020 12:51

Re: Timer avant de reprendre le jeu ?

Message par Alexis.B » 24 Avr 2020 15:09

Le problème est corrigé, tu avais raison il y avait un soucis dans mon script : le jeu reprenait quand le menu pause se fermait et non si il était fermé, cette différence change tout.
(J'ai essayé cette solution Aelhan mais le résultat me plais moins..)

En tout cas merci pour votre aide :-D

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

Re: [RESOLU] Timer avant de reprendre le jeu ?

Message par boubouk50 » 24 Avr 2020 15:21

Merci de penser à passer ton sujet en résolu.
Il te suffit d'éditer le titre du premier message et d'ajouter [RESOLU] en début de celui-ci.
"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 »