[Resolu] Pause (runtime) : on peut cliquer

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
cariXmatic31
Messages : 351
Inscription : 21 Mars 2011 18:58
Localisation : Toulouse

[Resolu] Pause (runtime) : on peut cliquer

Message par cariXmatic31 » 30 Oct 2015 22:30

Bonjour à tous ! :)
J'ai un léger problème avec le timeScale. Je voudrais pauser le jeu et tout le monde conseille de mettre le timeScale à 0. Je mets ça dans une coroutine qui boucle, cependant au runtime je peux cliquer et dpnc un évenement se déclenche, mais juste une fois, après ça marche.
Auriez-vous une idée du pourquoi de la chose ?

Code : Tout sélectionner

IEnumerator PauseCoroutine () {
		while (true)
		{
			if (Input.GetKeyDown(KeyCode.T))
			{
				if (Time.timeScale == 0)
				{
					Time.timeScale = 1;
				} else {
					Time.timeScale = 0;
				}
			}    
			yield return null;    
		}
	}
Merci !

cariXmatic31
Dernière édition par cariXmatic31 le 03 Nov 2015 09:12, édité 1 fois.

Xann_71
Messages : 93
Inscription : 23 Juin 2015 22:25
Localisation : Le puy en velay

Re: Pause (runtime) : on peut cliquer

Message par Xann_71 » 01 Nov 2015 11:55

Je penche sur le même sujet depuis hier. En fait timeScale = 0 ne met pas réellement ton jeu en pause. Il met juste le temps qui s'écoule en pause. ce qui signifie que tout ce qui est indépendant du temps continue de s'exécuter.

Exemple: je travail actuellement sur un jeu en 2D où l'on doit esquiver des astéroïdes venant de la droite de l'écran. J'ai donc des "lanceurs" d'astéroïdes hors champs de caméra qui envoient des astéroïdes toutes les 2 secondes. Par contre j'ai géré le déplacement et la vitesse, des astéroïdes, avec des variables et pour le déplacement, ces variables sont mises à jour à chaque update().
Du coup quand je met timescale à 0, les lanceurs dépendant du temps arrêtent bien de lancer des astéroïdes mais les astéroïdes en jeu continuent leur course.

Du coup pour utiliser le timescale pour mettre une pause, il faut que l'ensemble des élément et évènements de ta scène dépendent du temps.

cariXmatic31
Messages : 351
Inscription : 21 Mars 2011 18:58
Localisation : Toulouse

Re: Pause (runtime) : on peut cliquer

Message par cariXmatic31 » 03 Nov 2015 09:09

Oui je vois le truc, Update continue de tourner et comme j'avais un timer ça ne marche que pour le premier event.. Merci !

Répondre

Revenir vers « (C#) CSharp »