Problème avec le temps
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
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
Problème avec le temps
Bonsoir.
Je fais appel à vos connaissances car j'ai un problème sur ma ligne de temps dans un projet. Je ne suis pas sûr que sa vienne de mes scripts mais je ne vois pas d'où sa pourrait venir d'autre. En gros j'ai dans mon jeu des canons qui tirent à intervalles réguliers et des système des particules qui fonctionnent aussi avec le temps. Lorsque je travaillais sur mon projet il y'a quelques semaines, tout ce passait bien mon système de particules simulait des étoiles se déplaçant horizontalement et mes "canons" tiraient des astéroïdes toutes les 3 secondes.
En relançant mon projet ce soir, les étoiles ne bougent plus et les canons ne tirent plus. Tout ce qui semble dépendre du temps ne fonctionne plus.
mais ce qui dépend des update() fonctionne toujours (comme le déplacement verticale de mes canons à astéroïde).
J'ai donc glissé dans un update() les lignes:
Debug.Log(Time.time);
Debug.Log(Time.deltaTime);
Pour me rendre compte que leur valeur restait à 0. J'ai une scène menu et une scène jeu et le temps semble figé dans les 2.
Savez vous d'où peut venir ce problème? Ai je pu faire une erreur de script qui gèle le temps dans toutes les scènes du jeu?
Y'a t il un paramètre quelque part dans unity (à cocher ou liste déroulante, ...) qui stop le temps au lancement du jeu?
Merci d'avance pour votre aide.
Edit: J'ai réussi à corriger le freeze du temps en ajoutant :
Time.timeScale = 1;
dans un script lié à la caméra de ma scène menu. Mais je ne comprend tjs pas pourquoi mon temps est sur pause en lançant le jeu alors qu'avant il était par défaut actif.
Je fais appel à vos connaissances car j'ai un problème sur ma ligne de temps dans un projet. Je ne suis pas sûr que sa vienne de mes scripts mais je ne vois pas d'où sa pourrait venir d'autre. En gros j'ai dans mon jeu des canons qui tirent à intervalles réguliers et des système des particules qui fonctionnent aussi avec le temps. Lorsque je travaillais sur mon projet il y'a quelques semaines, tout ce passait bien mon système de particules simulait des étoiles se déplaçant horizontalement et mes "canons" tiraient des astéroïdes toutes les 3 secondes.
En relançant mon projet ce soir, les étoiles ne bougent plus et les canons ne tirent plus. Tout ce qui semble dépendre du temps ne fonctionne plus.
mais ce qui dépend des update() fonctionne toujours (comme le déplacement verticale de mes canons à astéroïde).
J'ai donc glissé dans un update() les lignes:
Debug.Log(Time.time);
Debug.Log(Time.deltaTime);
Pour me rendre compte que leur valeur restait à 0. J'ai une scène menu et une scène jeu et le temps semble figé dans les 2.
Savez vous d'où peut venir ce problème? Ai je pu faire une erreur de script qui gèle le temps dans toutes les scènes du jeu?
Y'a t il un paramètre quelque part dans unity (à cocher ou liste déroulante, ...) qui stop le temps au lancement du jeu?
Merci d'avance pour votre aide.
Edit: J'ai réussi à corriger le freeze du temps en ajoutant :
Time.timeScale = 1;
dans un script lié à la caméra de ma scène menu. Mais je ne comprend tjs pas pourquoi mon temps est sur pause en lançant le jeu alors qu'avant il était par défaut actif.
- boubouk50
- ModoGenereux
- Messages : 6246
- Inscription : 28 Avr 2014 11:57
- Localisation : Saint-Didier-en-Bresse (71)
Re: Problème avec le temps
As-tu fais une recherche globale dans tout ton code pour vérifier qu'à aucun autre endroit tu as un timeScale = 0?
"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
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation
Re: Problème avec le temps
Oui je l'avais fait. J'ai un seul endroit dans tous mes scripts où j'y fais appel, c'est le moment où le joueur se prend une astéroïde. Là, la pause arrête la génération et le défilement des astéroïdes et chargera le score obtenue par le joueur. Du coup je ne comprend pas qu'il mette le temps de la scène de jeu en pause avant la collision entre le joueur et une astéroïde et je comprend encore moins qu'il mette en pause le temps du menu principal avant même que la scène de jeu soit chargée.
Mon problème est résolu car je vais laisser cette ligne par sécurité au chargement du menu principal mais j'avoue que j'aurais bien aimé comprendre ce qu'il se passe.
Mon problème est résolu car je vais laisser cette ligne par sécurité au chargement du menu principal mais j'avoue que j'aurais bien aimé comprendre ce qu'il se passe.
- boubouk50
- ModoGenereux
- Messages : 6246
- Inscription : 28 Avr 2014 11:57
- Localisation : Saint-Didier-en-Bresse (71)
Re: Problème avec le temps
Tu peux nous soumettre ton code si tu veux qu'on essaie de t'expliquer. Si le temps s'arrête selon une certaine condition, il est possible qu'au Start () cette condition soit remplie.
"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
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation
Re: Problème avec le temps
Voici le code:
Après réflexion. La seule explication qui me vient est que j'ai du tester le jeu, perdre ma partie et sauvegarder le projet après avoir perdu sans relancer une partie ni retourner au menu. Du coup le timeScale aurait été sauvegarder dans le projet à la valeur 0 et en relaçant le jeu hier soir, vu qu'il était sauvegardé à 0, le jeu était sur pause dés que je le lançais.
Code : Tout sélectionner
#pragma strict
var Hmax: float; //Variable définissant la hauteur maximale autorisé pour le vaisseau
var Hmin: float; //Variable définissant la hauteur minimale autorisé pour le vaisseau
static var pos: float; //variable recevant la position du vaisseau sur l'axe Y. Elle permet au script GsnLanceurPlayer d'aligner le lanceur au vaisseau
//private var PosY : float = 0.0; //Variable qui permet de suivre la hauteur du vaisseau et ainsi de limiter ses déplacements sur la zone de l'écran.
function Start ()
{
}
function Update ()
{
//Gestion des déplacements du vaisseau en limitant ses mouvement sur l'axe Y via Hmax et Hmin
if(Input.GetButton("Ship_Up") && pos < Hmax)
{
//PosY += 0.1;
transform.Translate(Vector3(0, 0, 0.1));
}
if(Input.GetButton("Ship_Down") && pos > Hmin)
{
//PosY -= 0.1;
transform.Translate(Vector3(0, 0, -0.1));
}
pos = transform.position.y;
}
function OnTriggerEnter(collisionInfo: Collider)
{
//Mettre en pause le jeu et détruire l'astéroide et le vaisseau en contact
if(collisionInfo.gameObject.tag == "asteroide")
{
Time.timeScale = 0;
Destroy(collisionInfo.gameObject);
Destroy(gameObject);
}
}
Re: Problème avec le temps
Bonsoir,
Je ne crois que très peu à la sauvegarde.
Le truc c'est que tu as un "Time.timeScale = 0;" dans le Ontrigger.
Met un "Debug.Log("Dans le trigger");" ici
Et regarde dans la console si le message ne s'affiche pas au départ de ton jeu.
Je ne crois que très peu à la sauvegarde.
Le truc c'est que tu as un "Time.timeScale = 0;" dans le Ontrigger.
Met un "Debug.Log("Dans le trigger");" ici
Code : Tout sélectionner
function OnTriggerEnter(collisionInfo: Collider)
{
//Mettre en pause le jeu et détruire l'astéroide et le vaisseau en contact
if(collisionInfo.gameObject.tag == "asteroide")
{
Debug.Log("Dans le trigger!!! Le temps va s'arreter....");
Time.timeScale = 0;
Destroy(collisionInfo.gameObject);
Destroy(gameObject);
}
}
Re: Problème avec le temps
Je viens de faire le test. Donc le message ne s'affiche ni en arrivant dans le menu principal, ni au lancement de la partie mais uniquement lorsque le joueur se prend une astéroïde (comme il doit le faire). Donc le problème ne vient a priori pas de mon script.
Re: Problème avec le temps
Haa.. est-ce que le temps était arrêté avant l'apparition du message Debug.Log?
Re: Problème avec le temps
J'avais déjà eu un problème équivalent sur Car League lors de l'implémentation du menu pause: je fixais le Time.timeScale à 0 pour mettre en pause et parfois je quittais le jeu de manière violente sans quitter ce menu pause (et donc sans remettre le timeScale à 1).
Contrairement à tes éléments appartenant à la scène qui sont "réinitialisés" lorsque tu quittes l’exécution du jeu, là tu vas taper dans les réglages du projet Project Settings/Time/Time Scale et la modification du Time Scale reste donc à 0 si tu quittes le jeu en pleine pause.
Tu dois donc vérifier au lancement de ta scène que tu as bien Time.timeScale = 1.0f; pour une exécution normale.
Contrairement à tes éléments appartenant à la scène qui sont "réinitialisés" lorsque tu quittes l’exécution du jeu, là tu vas taper dans les réglages du projet Project Settings/Time/Time Scale et la modification du Time Scale reste donc à 0 si tu quittes le jeu en pleine pause.
Tu dois donc vérifier au lancement de ta scène que tu as bien Time.timeScale = 1.0f; pour une exécution normale.