Zobrazit předchozí téma :: Zobrazit následující téma |
Autor |
Zpráva |
Radis
Založen: 29. 03. 2014 Příspěvky: 235
|
Zaslal: 18. únor 2015, 09:41:32 Předmět: |
|
|
Mem: Nene, ten limit v nastaveni (Maximum Allowed Timestep) je jen pro fyziku (FixedUpdate). Volani Time.deltaTime v Update() ti vrati presne tolik, kolik trval predchozi frame, neni tam zadny limit. |
|
Návrat nahoru |
|
|
Mem
Založen: 28. 07. 2007 Příspěvky: 1959 Bydliště: Olomouc
|
Zaslal: 18. únor 2015, 10:39:54 Předmět: |
|
|
Radis: Nenene , má vliv na plovoucí update, věř mi. Pro fyziku máš přeci fixní krok. Pro FireLords jsem si kdysi psal vlastní systém pro maximální krok a pak zjistil, že to Unity má zabudované.
Důkaz místo slibů, na scéně mám objekt a skript, který pomocí matematického výpočtu blokne na mém i5 každý frame na 2-3 sekundy:
kód: |
void Update ()
{
float x = 0;
for (int i = 0; i < 100000000; i++)
{
x *= Mathf.Sqrt(i / Mathf.PI);
}
}
void OnGUI()
{
GUI.Label(new Rect(0, 0, 100, 20), Time.time.ToString());
GUI.Label(new Rect(0, 20, 100, 20), Time.deltaTime.ToString());
}
|
V OnGUI vykresluji Time.Time a pod ním Time.deltaTime. Zatímco v reálném čase uběhlo přes 10 sekund, v playeru vidím, jak to každé 2-3 sekundy cukne a vykreslí se tyhle hodnoty:
V Project settings/Time mám výchozí hodnoty:
|
|
Návrat nahoru |
|
|
Mem
Založen: 28. 07. 2007 Příspěvky: 1959 Bydliště: Olomouc
|
Zaslal: 18. únor 2015, 10:51:24 Předmět: |
|
|
Jinak tohle chování může mít samozřejmě i nečekané negativní efekty. Např. v DarkHuntu nám level trvá přesně 60 sekund, po které hraje na pozadí hudba. Indikovalo se to graficky a taky s tím počítal engine. Ale když rendering nestíhal (na starých Tegra2 tabletech můj shader pro svítilnu zpomaloval tak na 18-20 fps s výkyvy), deltaTime občas dosahoval nastaveného maxima. Výsledek byl, že celá hra byla zpomalená, hudba dohrála, a level pokračoval dál. Nakonec jsme to vyřešili přechodem na reálný čas a jeho ručním pauzováním (resetováním). Každopádně nejjednodušší je řešit to fyzikou ve fixním kroku a víc se nestarat... |
|
Návrat nahoru |
|
|
Radis
Založen: 29. 03. 2014 Příspěvky: 235
|
Zaslal: 18. únor 2015, 11:03:20 Předmět: |
|
|
Jj, pro fyziku je fixni krok, ale myslel jsem, ze ten maximum allowed timestep proste jen omezuje kolik FixedUpdates se maximalne provede v jednom vizualnim framu a ze na max. hodnotu Time.deltaTime to nema vliv.
Ale mas samozrejme pravdu, diky za info. Clovek se porad uci |
|
Návrat nahoru |
|
|
|