J'ai un petit soucis de math ...
Je fais un cycle jour/nuit , saison , météo,...
Pour cela, je compte les heures IG qui passent par rapport aux temps IRL.
J'ai donc dans mon Update()
Code : Tout sélectionner
time += Time.deltaTime;
if (time >= refresh_heure) // refresh_heure est le temps qui doit s'écouler IRL pour qu'une heure soit passée dans le jeu
{
time = 0;
heure++;;
print(heure);
}
if (heure >= 24)
{
heure = 0;
jour++;
}
Ensuite j'ai commencé le cycle jour nuit ( qui se modifie avec les saisons mais c'est loin de marcher car le calcul de base est déjà bancal...)
pour savoir si je suis de jour ou de nuit, je fais avancer un soleil et une lune entre deux points.
chacun démarre de la gauche pour terminer à droite changer un flag et revenir à gauche pour boucler la séquence.
il me faut donc un calcul qui fasse avancer les deux proportionnellement au temps qui passe en sachant que la durée dépendra de la saison.
j'ai donc ce calcul :
58(la distance entre le point d'arrivée et le point de départ -28 / 30 )
/
17 (le nombre d'heure ou il fait jour)*refresh_heure(le nombre de seconde pour faire une heure)
voyez plutôt :
Code : Tout sélectionner
if (day == true)
{
switch(saison)
{
case "ete":
soleil.transform.Translate(Vector2.right* Time.deltaTime*58/(17*refresh_heure));
break;
case "printemps":
soleil.transform.Translate(Vector2.right* Time.deltaTime*58/(13*refresh_heure));
break;
case "automne":
soleil.transform.Translate(Vector2.right* Time.deltaTime*58/(13*refresh_heure));
break;
case "hiver":
soleil.transform.Translate(Vector2.right* Time.deltaTime*58/(7*refresh_heure));
break;
}
posxsoleil = soleil.transform.localPosition.x;
}
if (day == false)
{
switch(saison)
{
case "ete":
lune.transform.Translate(Vector2.right* Time.deltaTime*58/(7*refresh_heure));
break;
case "printemps":
lune.transform.Translate(Vector2.right* Time.deltaTime*58/(11*refresh_heure));
break;
case "automne":
lune.transform.Translate(Vector2.right* Time.deltaTime*58/(11*refresh_heure));
break;
case "hiver":
lune.transform.Translate(Vector2.right* Time.deltaTime*58/(17*refresh_heure));
break;
}
posxlune = lune.transform.localPosition.x;
}
if (posxsoleil >= 28) {
day = false;
soleil.transform.localPosition = new Vector2(-30,soleil.transform.localPosition.y);
posxsoleil = -30;
}
if (posxlune >= 28) {
day = true;
lune.transform.localPosition = new Vector2(-30,lune.transform.localPosition.y);
posxlune = -30;
}
Je suppose que mon erreur vient d'une erreur de segmentation ou du delta occasionné par la latence ?
Est-ce qu'il serait possible de corriger ma formule ou il faut que je rajoute des bornes - if ( ce qui serait emmerdant vu que ma journée change avec la saison ) ?
En tout vas merci de m'avoir lu en espérant avoir une solution avant de perdre mes derniers cheveux ^^