Elaar Geschrieben 8. Februar 2019 Melden Share Geschrieben 8. Februar 2019 Guten Tag, Ich habe mir aus dem Asset Store ein Sun Rotations Asset "das im grunde soweit sehr gut Funktioniert" besorgt. Jedoch hätte ich gerne eine Erweiterung in dessen Funktion doch bin des Programmierens jedoch nicht mächtig. using System.Collections; using UnityEngine; public class SkyboxRotator : MonoBehaviour { public float x = 0f; public float y = 0f; public float z = 0f; void OnEnable() { InvokeRepeating("Rotate", 0f, 0.005f); } void Rotate() { this.transform.localEulerAngles += new Vector3(x, y, 0.01f); } void OnDisable() { CancelInvoke(); } } Ich hätte nun gerne die Funktion für die sonne, das ab der Position z 90 der wert von 0.01f auf 0.1f abgeändert wird. damit die nacht schneller eintritt und ab z 160 soll der gerade geänderte wert von 0.1f auf 0,001f geändert werden damit die finsterniss ruhiger von statten geht. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Sascha Geschrieben 8. Februar 2019 Melden Share Geschrieben 8. Februar 2019 Du kannst nicht wirklich Dinge alle 0.005 Sekunden ausführen. Unity malt dir alle X Sekunden ein neues Bild, und in demselben Interval werden Updates ausgeführt, also der Schritt, in dem sich Dinge bewegen und wo weiter. Invoke und InvokeRepeating schauen in jedem Update-Schritt, ob die angegebene Zeit abgelaufen ist, und wenn ja, dann wird Zeug ausgeführt. Das heißt, dass du bei einem Update alle 0.016 Sekunden jeweils schon 0.011 Sekunden über deinen 0.005 Sekunden drüber liegst. Lange Rede, kurzer Sinn: Invoke und InvokeRepeating nutzt man (wenn überhaupt...) nur für größere Zeitintervalle. Um etwas jeden Frame auszuführen, nutze Update. Ein simples Rotationsscript sieht so aus: public class SimpleRotate : MonoBehaviour { public Vector3 rotation; private void Update() { transform.Rotate(rotation * Time.deltaTime); } } Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Elaar Geschrieben 8. Februar 2019 Autor Melden Share Geschrieben 8. Februar 2019 Das habe ich anders interpretiert. Alle 0,01 sec führt das Script eine Bewegung für 0,005 sec aus und das in einer Endlosschleife. Das Erhöht zwar extrem das Intervall in der Geschwindigkeit, macht jedoch die Bewegung des Objektes sehr langsam und weich. Sprich bei mir bewegt sich die Sonne ganz langsam und weich. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Sascha Geschrieben 9. Februar 2019 Melden Share Geschrieben 9. Februar 2019 vor 2 Stunden schrieb Elaar: Alle 0,01 sec führt das Script eine Bewegung für 0,005 sec aus und das in einer Endlosschleife Nö. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Elaar Geschrieben 10. Februar 2019 Autor Melden Share Geschrieben 10. Februar 2019 So, ich muss das leider nochmal aufgreifen, Das Rotations Script funktioniert für meine Sache wie ich mir das vorstelle. Bräuchte aber die Ergänzung, das ab der Transform Rotations Position Z von 45° der wert aus dem bestehenden Script (z) auf einen anderen wert geändert wird und ein weiteres mal bei 135°. 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.