Jump to content
Unity Insider Forum

Script für Übergang zwischen zwei Skyboxen (Tag/Nacht)


Hasenhorst

Recommended Posts

Guten Abend,

 

ich bin auf der Suche nach einer Möglichkeit zwei Himmelstexturen automatisch überblenden zu lassen. Einen entsprechenden Shader konnte ich dazu bereits finden:

 

http://wiki.unity3d.com/index.php?title=SkyboxBlended

 

Soweit so gut.

Ich frage mich jetzt nur, wie ich es hin bekomme, dass die Skybox automatisch nach einer bestimmten Zeit überblendet?

 

Mit freundlichen Grüßen

Hasenhorst

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi,

ich würde einfach über Time.time die Spielzeit abfragen und dementsprechend den "_Blend" -wert setzen ;)

 

Den Blendwert setzt man glaube ich etwa so:

using UnityEngine;
using System.Collections;

public class Sky : MonoBehaviour {
   public Material skybox;
   public float blend;

   void Update () {
       skybox.SetFloat("_Blend",blend);
   }
}

Link zu diesem Kommentar
Auf anderen Seiten teilen

mal ne frage sowas hab ich auch schon gesucht. aber ich muss ehrlich sagen das scripten ist nix für mich ;) geht das auch über nen trigger? oder sollte man das komplett anders lösen. zb eine scene die bis zum bestimmten zeitpunkt den einen look hat und wenn mann zb aus nen gebäude wieder ruaskommt bekommt die scene nen 2 look

Link zu diesem Kommentar
Auf anderen Seiten teilen

Das Ding ist zwar ne Lösung, aber falls man dann irgendwie was braucht was der nicht kann, muss man sich stundenlang irgendwas zusammenstecken und rumprobieren weil man keine Praxiserfahrung hat und der generierte Code ist alles andere als schön, aber wenn man nix mit dem scripten anfangen kann, dann isses halt so.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Vielen Dank für die Hinweise und die Hilfe!

 

Ich finde den Lösungsansatz von Mr 3d gar nicht mal schlecht, aber kann ich nicht einfach auch angeben wie lange eine der beiden Skyboxes gezeigt werden soll anstatt die Spielzeit abzufragen??

 

Bsp:

------------------------------------------------------

Skybox1

...

wait 30 Sec

...

dann blende zu Skybox2

...

wait 30 Sec

...

blende zu Skybox1 zurück

-------------------------------------------------------

(Schleife)

 

HortusLongus dein Verweis auf die Videos war auch sehr Hilfreich. Nur fehlt mir allein dieser kleine Schritt. Ansonsten bin ich mit meinem Day/Night-Circle bereits zufrieden. Ich würde lieber einen Codesnipsel einbauen anstatt eines komplett neuen Scriptes.

 

Hat jemand eine Idee, wie das Ganze auszusehen hätte in meinem Beispiel?

 

Viele Grüße

Hasenhorst

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich würde einen Lerp benutzen, sonst sieht es sehr unschön aus, wenn der Himmel plötzlich tauscht...

 

Hier ein Beispiel:

using UnityEngine;

using System.Collections;

public class DayNight : MonoBehaviour {
public Material skybox;
public float DayNightTime;
float Lerp;
float WorldTime;
bool isAdding = false;

void Update(){
	if(Lerp >= 1 || Lerp <= 0){
		isAdding = !isAdding;
	}
	if(isAdding){
		WorldTime += Time.deltaTime;
	}
	else{
		WorldTime -= Time.deltaTime;
	}
	Lerp = WorldTime/DayNightTime;
	skybox.SetFloat("_Blend",Mathf.Lerp(0,1,Lerp));
}
}

 

Bitte nicht einfach kopieren, sonst lernst du nichts dabei ;)

 

EDIT:

Sorry, W4KE hab deine Antwort nicht gesehen

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

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

×
×
  • Neu erstellen...