Heute möchte ich euch gerne einen automatischen Tag-Nacht-Wechsel vorstellen. Alles was ihr dazu braucht, sind 2 verschiedene Skyboxen (eine für den Tag und eine für die Nacht) und folgendes Script.
Zuerst müsst ihr ein Directional Light in eure Szene einfügen und mit dem Tag "Sun" versehen. Das Taggen ist nicht unbedingt notwendig, aber ich habe mir angewöhnt GameObjecte mit passenden Tags zu versehen. Zusammenpassende GameObjekte erhalten dann natürlich das gleiche Tag.
Nun Positioniere ich das Directional Light auf Y (Hier in meinem Fall auf y=1890) Warum ich hier einen so hohen Wert genommen habe, frage ich mich gerade beim schreiben dieser Zeilen selbst. ;)
Anschließend hängt ihr ein leeres GameObjekt an das Directional Light mit den Positionen x und y = 0. z verschiebt ihr ein wenig in den negativen Bereich. Hier bei mir -3,77. (Alle Werte könnt ihr natürlich für euch anpassen. Das sollte an der Funktionsweise nichts verändern.
Nun fügt ihr folgendes Script dem Directional Light zu.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class NightSunZyklus : MonoBehaviour {
[SerializeField]
private bool _daySwitch; // Variable um den TagNachtWechsel einzuleiten
public float Speed; //Geschwindigkeit der Rotation der Sonne
public GameObject Hoehenmesser; //Angehangenes GameObjekt am Directional Light
public Light Sun; //Directional Light Sun
public Material SkyOne; //Skybox für den Tag
public Material SkyTwo; //Skybox für die Nacht
void Update()
{
if (Hoehenmesser.transform.position.y < 1890.0F) /*Wenn ihr die y Position des Directional Lights verändert habt, müsst ihr das hier anpassen. Prüft an welcher Stelle die "Sonne" sich befindet*/
{
if (!_daySwitch)
{
LightOff();
}
}
else
{
if (_daySwitch)
{
LightOn();
}
}
}
//hier wird der Rotation des Lichts durchgeführt
void LateUpdate () {
transform.Rotate(Vector3.right, Speed * Time.deltaTime);
}
//Umschalten auf Nachtmodus
void LightOff()
{
Sun.intensity = 0.025F;
RenderSettings.skybox = SkyTwo;
_daySwitch = true;
Speed = 1F;
}
//Umschalten auf Tagmodus
void LightOn()
{
Sun.intensity = 1.5F;
RenderSettings.skybox = SkyOne;
_daySwitch = false;
Speed = 0.05F;
}
}
Mit der Werten der Variablen Speed und dem Sun.intensity müsst ihr etwas rumprobieren, bis das zu euren Anforderungen passt. Ich habe hier den Tag deutlich länger gemacht als die Nacht. Man will schließlich nicht die ganze Zeit im dunkeln spielen ;)
Ihr dürft das ganze natürlich frei nutzen, ändern und verwenden.
Wer Änderungen und/oder Verbesserungen zu o.g. Script hat, darf mir die natürlich gerne mitteilen.
Wer das Script nutzt darf mich gerne in seinen Credits als BroPowerGames aufführen. XD
@trollolex, schau mal! :)
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
das is richtig cool sieht super aus!
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Dankeschön....
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Top!!!
☺☺☺
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Danke 😊
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
einfache Implementation, gut gezeigt :)
finde nur leider, dass die Nacht im Video nicht so gut rüber kommt o: hast zwar erwähnt dass sie kurz ist, aber wirklich deutlich sehen tu ich sie gar nicht.. (gucks aber auch vom Smartphone aus, weiß nicht ob die Farben am PC vielleicht anders sind)
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Die sieht man da auch nicht. Das ist der Sonnenaufgang. Ich wollte nur zeigen, wie sich die Sonne bewegt. 😉
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
achso - wegen des Titels und des Codes in dem ja die Skybox durch ne Nachtszene ersetzt wird, dachte ich die gehört da rein und war dann verwundert :D
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Klar der Tag Nacht Wechsel konmt da auch. Aber eben nicht in dem kurzen Video. Hätte ich vielleicht etwas länger laufen lassen sollen. Und früher beginnen. Dann hätte man den Skyboxwechsel auch gesehen. Da habe ich nicht drüber nachgedacht. Fürs nächste mal 😬
Danke für den Konstruktive Einwand. 👍😉
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit