Hasenhorst Geschrieben 25. Juni 2013 Melden Share Geschrieben 25. Juni 2013 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 More sharing options...
Mr 3d Geschrieben 25. Juni 2013 Melden Share Geschrieben 25. Juni 2013 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 More sharing options...
HortusLongus Geschrieben 26. Juni 2013 Melden Share Geschrieben 26. Juni 2013 Schau mal hier, die Videos 72 bis 81 sollten dein Problem auflösen. Ist zwar etwas älter, funktioniert aber und du verstehst dann, was du machst. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
xyn Geschrieben 26. Juni 2013 Melden Share Geschrieben 26. Juni 2013 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 More sharing options...
W4KE Geschrieben 26. Juni 2013 Melden Share Geschrieben 26. Juni 2013 Ja aber wie willst du denn ein Spiel entwickeln wenn scripten nichts für dich ist? Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Tiles Geschrieben 26. Juni 2013 Melden Share Geschrieben 26. Juni 2013 Vielleicht ist der Playmaker was für dich Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
W4KE Geschrieben 26. Juni 2013 Melden Share Geschrieben 26. Juni 2013 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 More sharing options...
Hasenhorst Geschrieben 27. Juni 2013 Autor Melden Share Geschrieben 27. Juni 2013 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 More sharing options...
W4KE Geschrieben 27. Juni 2013 Melden Share Geschrieben 27. Juni 2013 Klar, aber nächstes mal besser googeln void Start() { StartCoroutine(Warte()); } IEnumerator Warte() { yield return new WaitForSeconds(30.0f); VerändereSkyBox(); } So als kleiner Ansatz. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Mr 3d Geschrieben 27. Juni 2013 Melden Share Geschrieben 27. Juni 2013 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 More sharing options...
Recommended Posts
Archiviert
Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.