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: 16. listopad 2015, 15:07:39 Předmět: |
|
|
Mem: Posouvat se to bude, ]semo[ prece lerpuje v kazdem framu z nove pocatecni hodnoty Ale ma to sve nevyhody, o kterych ]semo[ psal. (Plus nizsi pochopitelnost kodu, ze Meme? ) |
|
Návrat nahoru |
|
|
Mem
Založen: 28. 07. 2007 Příspěvky: 1959 Bydliště: Olomouc
|
Zaslal: 16. listopad 2015, 15:16:05 Předmět: |
|
|
Měl bych zajít na oční no Sem-tam se musím i omluvit! |
|
Návrat nahoru |
|
|
mar
Založen: 16. 06. 2012 Příspěvky: 608
|
Zaslal: 16. listopad 2015, 18:16:44 Předmět: |
|
|
Radis napsal: |
Tohle mi pripada jako lepsi pristup, zapis je IMHO prirozenejsi a nema ty dve nevyhody, co ]semo[ zminil (tzn. takto hodnota opravdu dojde k vysledku a hlavne tam dojde bez zpomalovani, linearne):
kód: |
var timeSinceStart = Time.time - startTime;
var t = timeSinceStart / duration;
material.color = Color.Lerp(Color.red, Color.green, t);
|
|
Já jsem zvyklý používat counter a zvyšovat pomocí delta času framu, to mi přijde jako lepší řešení
plus pokud je v Unity ten čas jako float a poběží to týden v kuse.... (604800.0f + 1.0f/60.0f = 604800.0f) |
|
Návrat nahoru |
|
|
Radis
Založen: 29. 03. 2014 Příspěvky: 235
|
Zaslal: 16. listopad 2015, 22:34:46 Předmět: |
|
|
No tak myslim, ze se da s klidem predpokladat, ze interne je snad Time.time double, ne? Ja bych developery z Unity zase tak nepodcenoval
A myslim, ze nema cenu timto upirovi102 vubec plest hlavu. |
|
Návrat nahoru |
|
|
mar
Založen: 16. 06. 2012 Příspěvky: 608
|
Zaslal: 16. listopad 2015, 23:08:13 Předmět: |
|
|
Radis napsal: |
No tak myslim, ze se da s klidem predpokladat, ze interne je snad Time.time double, ne? Ja bych developery z Unity zase tak nepodcenoval
|
Ano, máš pravdu, interně to je double (http://forum.unity3d.com/threads/time-class-floating-point-accuracy.123344/),
nicméně ten prototyp vrací float, takže při dlouhém běhu se nezastaví, nicméně se časem začne kvantizovat.
Otázka je, kdo bude mít hru reálně puštěnou dýl, jak několik hodin,
každopádně pokud použije delta čítač, tak tento problém nenastane nikdy. |
|
Návrat nahoru |
|
|
Radis
Založen: 29. 03. 2014 Příspěvky: 235
|
Zaslal: 16. listopad 2015, 23:37:41 Předmět: |
|
|
Snazime se tady jenom poradit zacatecnikovi ohledne lerpu z jedne barvy do druhe, to prece neni zadna veda. Zbytecne bych to nekomplikoval |
|
Návrat nahoru |
|
|
upir102
Založen: 21. 09. 2015 Příspěvky: 9
|
Zaslal: 10. prosinec 2015, 10:13:57 Předmět: |
|
|
Pokúšam sa to podľa vašich rád spraviť ale nejde mi to stále ... môže byť problém v tom, že tá funckia je v podmienke If ? Skúšal som viacero vecí ale stále to reaguje takisto .
Tu je môj script terajší bez tých úprav , mám tam teraz Tim.time ale aj keď ju zmením na tekéto niečo , stále tá farba sa mení rýchlo bez pomalého prechodu
var timeSinceStart = Time.time - startTime;
var t = timeSinceStart / duration;
material.color = Color.Lerp(Color.red, Color.green, t);
#pragma strict
var ray : Ray;
var hit : RaycastHit;
var model : GameObject;
var menu : GameObject;
var kocka : GameObject;
function Update ()
{
ray = Camera.main.ScreenPointToRay(Input.mousePosition);
if(Physics.Raycast(ray, hit) && hit.collider.gameObject.tag == "lebka" )
{
model.GetComponent.<Renderer>().material.color = Color.Lerp(Color.black, Color.green, Time.time);
if(Input.GetMouseButtonDown(0) )
{ kocka.GetComponent.<BoxCollider>().enabled=true;
model.GetComponent.<MeshCollider>().enabled=false;
kocka.GetComponent.<Animation>().Play("lebka1");
menu.GetComponent.<Animation>().Play("1");
}
}
else {
model.GetComponent.<Renderer>().material.color = Color.Lerp(Color.white, Color.white, Time.time);
} } |
|
Návrat nahoru |
|
|
|