Jump to content
Unity Insider Forum
Sign in to follow this  
Elaar

Sonnen Rotation anpassen

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. 

Share this post


Link to post
Share on other sites

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);
  }
}

 

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites
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ö.

Share this post


Link to post
Share on other sites

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°.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×