Page 1 sur 1

[Resolu] Pause (runtime) : on peut cliquer

Publié : 30 Oct 2015 22:30
par cariXmatic31
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

Re: Pause (runtime) : on peut cliquer

Publié : 01 Nov 2015 11:55
par Xann_71
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.

Re: Pause (runtime) : on peut cliquer

Publié : 03 Nov 2015 09:09
par cariXmatic31
Oui je vois le truc, Update continue de tourner et comme j'avais un timer ça ne marche que pour le premier event.. Merci !