unityalphanoob Geschrieben 27. Dezember 2013 Melden Share Geschrieben 27. Dezember 2013 Ich versuche gerade erfolglos die Intensity von dem "BloomAndLensFlares" Script per Script genau nach 40 Sekunden zu erhöhen. So ungefähr sollte es klappen: function Start () { BloomAndLensFlares.Intensity = 0; yield WaitForSeconds (40); BloomAndLensFlares.Intensity = 20; } Eigentlich soll die Intensity sich langsam erhöhen und nicht von von einem Frame zum Anderen. Deshalb sollte ich eigentlich die Update-Function verwenden, aber da kenne ich mich leider noch nicht mit den Zeitverhältnissen aus. Ich denke ihr wisst was ich meine Bitte um Hilfe! Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Mese96 Geschrieben 27. Dezember 2013 Melden Share Geschrieben 27. Dezember 2013 Ich weiß jetzt nicht wie das mit dem erhöhen funktioniert aber zur Zeit: Das mit dem yield WaitforSeconds funktioniert soweit ich weiß nur in Coroutinen. So wie du es da machst erhöst du die intensity ja plötzlich , aber du willst ja nur ein bisschen jeden Frame oder ? Time.delta Time gibt dir an wieviel Zeit zwischen 2 Frames vergangen ist. Du könntest die Itensity z.B. jeden Frame um diesen Wert erhöhen bis er 20 erreicht hat. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Entwicklerpages Geschrieben 27. Dezember 2013 Melden Share Geschrieben 27. Dezember 2013 Hi, so wie du das jetzt machst wartet er einfach 40 Sekunden und setzt dann die Intensity auf 20. Du musst jeden Frame die Werte aktualisieren. Zum Beispiel kannst du eine Update Funktion schreiben. Dann brauchst du noch eine Variable mit der Zeit bei der du dann jeden Frame Time.deltaTime abziehst. Damit hasst du dann einen Countdown. Sobald die Variable <= 0 ist kannst du mit dem herunterzählen aufhören. Die Instensity bestimmst du dann mit Mathf.Lerp Das könnte so aussehen (ungetestet!): var timer : float; // Achtung ich komme ehr aus der C# Welt, d.h. bin ich mir jetzt nicht sicher ob das so richtig ist. function Start() { timer = 40.0f; } function Update() { if (timer > 0.0f) timer -= Time.deltaTime; BloomAndLensFlares.Intensity = Mathf.Lerp(0.0f, 20.0f, timer); } Aber wie gesagt der Code ist ungetestet und enthält möglicherweise Fehler. Ausserdem ist es gut möglich, das ess bessere Wege gibt. MfG Nico Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Mese96 Geschrieben 27. Dezember 2013 Melden Share Geschrieben 27. Dezember 2013 var timer : float; // Achtung ich komme ehr aus der C# Welt, d.h. bin ich mir jetzt nicht sicher ob das so richtig ist. function Start() { timer = 40.0f; } function Update() { if (timer > 0.0f) timer -= Time.deltaTime; BloomAndLensFlares.Intensity = Mathf.Lerp(0.0f, 20.0f, timer); } Ist so ungefähr das was ich auch meinte. Aber da sind schon Fehler drin 1. Du zählst runter aber passt dennoch die Intensity jeden Frame an und dimmst bis auf 0 (anstatt nach 40 sekunden zu erhöhen) 2.Zu beginn hat dein timer den Wert 40 und ist somit größer wie der Maximalwert 20 3. Der 3. Wert von Math.Lerp sollte zwischen 0 und 1 liegen Richtiger wäre es (nach meinem Halbwissen); var timer : float; var wert : float; function Start() { timer = 40.0f; wert = 0.0f } function Update() { if (timer > 0.0f){ timer -= Time.deltaTime; } elseif(wert < 1){ BloomAndLensFlares.Intensity = Mathf.Lerp(10.0f, 20.0f, wert); wert += Time.deltatime; } } Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
unityalphanoob Geschrieben 27. Dezember 2013 Autor Melden Share Geschrieben 27. Dezember 2013 Ist so ungefähr das was ich auch meinte. Aber da sind schon Fehler drin 1. Du zählst runter aber passt dennoch die Intensity jeden Frame an und dimmst bis auf 0 (anstatt nach 40 sekunden zu erhöhen) 2.Zu beginn hat dein timer den Wert 40 und ist somit größer wie der Maximalwert 20 3. Der 3. Wert von Math.Lerp sollte zwischen 0 und 1 liegen Richtiger wäre es (nach meinem Halbwissen); var timer : float; var wert : float; function Start() { timer = 40.0f; wert = 0.0f } function Update() { if (timer > 0.0f){ timer -= Time.deltaTime; } elseif(wert < 1){ BloomAndLensFlares.Intensity = Mathf.Lerp(10.0f, 20.0f, wert); wert += Time.deltatime; } } Zuerst einmal danke EDIT: der countdown funktioniert, wen der aber abgelaufen ist passiert irgendwie nix :/ Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Mese96 Geschrieben 27. Dezember 2013 Melden Share Geschrieben 27. Dezember 2013 Hast du das Script einfach übernommen oder noch was geändert? Wie man die Intensity setzt weiß ich nämlich selbst nicht... hab da einfach den Code aus dem anderen Script genommen. Zeig mal dein Script. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
unityalphanoob Geschrieben 27. Dezember 2013 Autor Melden Share Geschrieben 27. Dezember 2013 var timer : float; var wert : float; function Start() { timer = 40.0f; wert = 0.0f; } function Update() { if (timer > 0.0f){ timer -= Time.deltaTime; } else if(wert < 1){ BloomAndLensFlares.Intensity = Mathf.Lerp(10.0f, 20.0f, wert); wert += Time.deltatime; } } Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
unityalphanoob Geschrieben 27. Dezember 2013 Autor Melden Share Geschrieben 27. Dezember 2013 "MissingFieldException" kommt immer. Kann es sein das die Variable "Wert" sich im Script gar nicht ändert? Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Mese96 Geschrieben 27. Dezember 2013 Melden Share Geschrieben 27. Dezember 2013 wert ändert sich eigentlich schon aber soweit ich das beurteilen kann fehlt da auch noch mehr. Kann man BloomAndLensFlares.Intensity einfach so benutzen ? Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
unityalphanoob Geschrieben 27. Dezember 2013 Autor Melden Share Geschrieben 27. Dezember 2013 wert ändert sich eigentlich schon aber soweit ich das beurteilen kann fehlt da auch noch mehr. Kann man BloomAndLensFlares.Intensity einfach so benutzen ? Jetzt läufts. Zumindest läuft der Countdown ab und die Intensity erhöht sich. Hier das halbwegs laufende Script: Leider erhöht sich die Intensity schlagartig nachdem der Countdown zu Ende geht. var timer : float; var wert : float; function Start() { timer = 5.0f; wert = 0.0f; } function Update() { if (timer > 0.0f) { timer -= Time.deltaTime; } else if(wert < 1) { BloomAndLensFlares.bloomIntensity = Mathf.Lerp(10.0f, 20.0f, wert); wert += Time.deltatime; } } Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
unityalphanoob Geschrieben 27. Dezember 2013 Autor Melden Share Geschrieben 27. Dezember 2013 Ok habs hinbekommen: var timer : float; function Start() { timer = 46.0f; } function Update() { if (timer > 0.0f) { timer -= Time.deltaTime; } if (timer < 0 && BloomAndLensFlares.bloomIntensity < 20) { BloomAndLensFlares.bloomIntensity = BloomAndLensFlares.bloomIntensity + 0.1; } } Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Recommended Posts
Archiviert
Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.