Jump to content
Unity Insider Forum

Sonnen Rotation anpassen


Elaar

Recommended Posts

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

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

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

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

Archiviert

Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.

×
×
  • Neu erstellen...