Voiçi un petit script en JS que je viens de faire, il sera amélioré avec le temps mais je vous le montre pour plusieurs choses:
Avoir votre avis
Avoir des idées
partagée en même temps avec la Communauté une base de script
Code : Tout sélectionner
private var TimeOneDay : float = 86400; // temps pour 1Jours réel
var TimerOneDayFloat : float; // timer de la journée
var TimerOneDay : int; //timer de la journée en entier
var CountDay : int = 0; // Nombre de jours passé
var HoursRealyForOneDayGame : float; // Heure reel pour 1 jours en jeux a mettre avant de lancé le jeux
var MultiplicateurTime : float;
//time
var Hours : int;
var Minutes : int;
var Secondes : int;
//variable de date
var Days : int;
var Month : int;
var years : int;
//var NameDay : nameDay; //todo
var NameMonth : nameMonth;
//variable des saison
var Season : season;
var currentPhase : DayPhase;
//variable soleil//
var Sun : GameObject;
var SunHoursByDay : float;// todo a définir via les saison
var MultiplicateurSunTime : float; //todo ajouté le multiplicateur en foncrion du nombre d heure de la saison
//variable temperature
var WorldTemperature : float;
private var MaxSummerTemperature : float = 40.0;
private var MinSummerTemperature : float = 20.0;
private var MaxAutumnTemperature : float = 20.0;
private var MinAutumnTemperature : float = 5.0;
private var MaxWinterTemperature : float = 12.0;
private var MinWinterTemperature : float = -12.0;
private var MaxSpringTemperature : float = 20.0;
private var MinSpringTemperature : float = 5.0;
private var TemperatureDay : float;
private var TemperatureNight : float;
private var TemperatureTempo : float;
function Start()
{
Sun = GameObject.Find("Sun");
TimerOneDayFloat = 43200; //début du jeux a midi
//Initialisation du multiplicateur
MultiplicateurTime = 24.0 / HoursRealyForOneDayGame;
Days = 21;
Month = 01;
years = 2015;
NameMonth = NameMonth.January;
SetSeason();
SetNameMonth();
SetTemperatureOfDay();
}
function Update()
{
//calcule des jours, mois, année dans le jeux//
TimerOneDay = TimerOneDayFloat;
TimerOneDayFloat += Time.deltaTime * MultiplicateurTime;
if(TimerOneDay >= TimeOneDay)
{
TimerOneDayFloat = 0;
CountDay += 1;
Days += 1;
SetSeason();
SetTemperatureOfDay();
}
if(Days>30)
{
Month += 1;
SetNameMonth();
Days = 1;
}
if(Month > 12)
{
years +=1;
Month = 1;
}
//fin du calcule jours mois année //
//définition de la phase du jour
//déplacement du soleil
Sun.transform.Rotate((Time.deltaTime / 240) * MultiplicateurTime, 0, 0);
//todo ajouté déplacement latérale du soleil
//Calcule l heure dans le jeux
Secondes = TimerOneDay % 60;
Minutes = TimerOneDay / 60;
Hours = Minutes / 60;
Minutes = Minutes % 60;
ChangeCurrentPhase();
}
//fonction de selection du nom du mois
function SetNameMonth()
{
if(Month == 01)
{
NameMonth = NameMonth.January;
}
else if(Month == 02)
{
NameMonth = NameMonth.February;
}
else if(Month == 03)
{
NameMonth = NameMonth.March;
}
else if(Month == 04)
{
NameMonth = NameMonth.April;
}
else if(Month == 05)
{
NameMonth = NameMonth.May;
}
else if(Month == 06)
{
NameMonth = NameMonth.June;
}
else if(Month == 07)
{
NameMonth = NameMonth.July;
}
else if(Month == 08)
{
NameMonth = NameMonth.August;
}
else if(Month == 09)
{
NameMonth = NameMonth.September;
}
else if(Month == 10)
{
NameMonth = NameMonth.October;
}
else if(Month == 11)
{
NameMonth = NameMonth.November;
}
else if(Month == 12)
{
NameMonth = NameMonth.December;
}
else
{
Debug.Log("erreur de selection des nom des Mois");
}
}
//fonction de selection de la saison par rapport a la date
function ChangeCurrentPhase()
{
if(Hours >= 0 && Hours <= 6 && currentPhase != DayPhase.Night)
{
currentPhase = DayPhase.Night;
WorldTemperature = TemperatureNight;
Debug.Log("Temperature de nuit " + WorldTemperature);
}
else if(Hours >= 6 && Hours < 12 && currentPhase != DayPhase.Dawn)
{
currentPhase = DayPhase.Dawn;
WorldTemperature = (TemperatureDay - 5);
Debug.Log("Temperature du matin " + WorldTemperature);
}
else if(Hours >= 12 && Hours < 18 && currentPhase != DayPhase.Day)
{
currentPhase = DayPhase.Day;
WorldTemperature = (TemperatureDay);
Debug.Log("Temperature de journée " + WorldTemperature);
}
else if(Hours >= 18 && Hours < 24 && currentPhase != DayPhase.Dusk)
{
currentPhase = DayPhase.Dusk;
WorldTemperature = (TemperatureDay - 3);
Debug.Log("Temperature du soir " + WorldTemperature);
}
}
function SetSeason()
{
if(NameMonth == NameMonth.January || NameMonth == NameMonth.February)
{
if(Season !=Season.Winter)
{
Season = Season.Winter;
}
}
else if(NameMonth == NameMonth.March && Days <21)
{
if(Season !=Season.Winter)
{
Season = Season.Winter;
}
}
else if(NameMonth == NameMonth.December && Days >=21)
{
if(Season !=Season.Winter)
{
Season = Season.Winter;
}
}
else if(NameMonth == NameMonth.March && Days >=21)
{
if(Season !=Season.Spring)
{
Season = Season.Spring;
}
}
else if(NameMonth == NameMonth.April || NameMonth == NameMonth.May)
{
if(Season !=Season.Spring)
{
Season = Season.Spring;
}
}
else if(NameMonth == NameMonth.June && Days <21)
{
if(Season !=Season.Spring)
{
Season = Season.Spring;
}
}
else if(NameMonth == NameMonth.June && Days >=21)
{
if(Season !=Season.Summer)
{
Season = Season.Summer;
}
}
else if(NameMonth == NameMonth.September && Days <21)
{
if(Season !=Season.Summer)
{
Season = Season.Summer;
}
}
else if(NameMonth == NameMonth.July || NameMonth == NameMonth.August)
{
if(Season !=Season.Summer)
{
Season = Season.Summer;
}
}
else
{
if(Season !=Season.Autumn)
{
Season = Season.Autumn;
}
}
}
function SetTemperatureOfDay()
{
if(Season == Season.Summer)
{
TemperatureDay = Random.Range(MinSummerTemperature, MaxSummerTemperature);
TemperatureNight = Random.Range(MinSummerTemperature, MaxSummerTemperature);
if(TemperatureDay < TemperatureNight)
{
TemperatureTempo = TemperatureDay;
TemperatureDay = TemperatureNight;
TemperatureNight = TemperatureTempo;
}
}
else if(Season == Season.Autumn)
{
TemperatureDay = Random.Range(MinAutumnTemperature, MaxAutumnTemperature);
TemperatureNight = Random.Range(MinAutumnTemperature, MaxAutumnTemperature);
if(TemperatureDay < TemperatureNight)
{
TemperatureTempo = TemperatureDay;
TemperatureDay = TemperatureNight;
TemperatureNight = TemperatureTempo;
}
}
else if(Season == Season.Winter)
{
TemperatureDay = Random.Range(MinWinterTemperature, MaxWinterTemperature);
TemperatureNight = Random.Range(MinWinterTemperature, MaxWinterTemperature);
if(TemperatureDay < TemperatureNight)
{
TemperatureTempo = TemperatureDay;
TemperatureDay = TemperatureNight;
TemperatureNight = TemperatureTempo;
}
}
else if(Season == Season.Spring)
{
TemperatureDay = Random.Range(MinSpringTemperature, MaxSpringTemperature);
TemperatureNight = Random.Range(MinSpringTemperature, MaxSpringTemperature);
if(TemperatureDay < TemperatureNight)
{
TemperatureTempo = TemperatureDay;
TemperatureDay = TemperatureNight;
TemperatureNight = TemperatureTempo;
}
}
}
public enum nameMonth
{
January = 0,
February = 1,
March = 2,
April = 3,
May = 4,
June = 5,
July = 6,
August = 7,
September = 8,
October = 9,
November = 10,
December = 11,
}
public enum DayPhase
{
Night = 0,
Dawn = 1,
Day = 2,
Dusk = 3
}
/*
public enum nameDay
{
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
Sunday
}
*/
public enum season
{
Summer = 0,
Autumn = 1,
Winter = 2,
Spring = 3,
}