2016-04-03 19 views
1

Oyunumda her sezon için bir tane olmak üzere dört farklı skybox'ım var.Unity 3D, bir skybox'tan diğerine soluyor

C# içindeki skybox'lar arasında bir geçiş geçişi nasıl oluşturabilirim? Örneğin, belirli bir noktada, yaz göğün sonbaharda düştüğü yere düşüyor.

Teşekkür ederiz!

cevap

1

Karışımı bir gölgelendiricide yapmak isteyeceksiniz, iki gökyüzü kutusu arasında karışabilen one on the Unify wiki var.

Sen shader kurdum karıştırma

+0

4. arasına etkisini elde etmek için bunlardan 2 arasında karıştırma bitince (material.SetTexture kullanarak) bir komut dosyası kullanarak malzemedeki dokular takas gerekiyor ve malzeme ve gökyüzü kutusu kaydırıcıyı kullanarak karışır. Bunu kodumda (C#) nasıl yazabilirim ki böylelikle yavaş yavaş harman = 0.0 ile blend = 1 arasında canlandırılır. Anladığım kadarıyla \t \t \t skyboxmaterial.SetFloat ("_ Blend", blendNumber); Ancak belirli bir süre boyunca kademeli olarak artan harman Numarasına ihtiyacım var. –

+0

Mathf.Lerp'i (başlangıç, bitiş, zaman), diğer ikisi arasında 0 ile 1 arasında bir değer elde etmek için kullanabilirsiniz. Kullanmanın kolay (ama teknik olarak yanlış) yolu şudur: .SetFloat ("_ Blend", Mathf.Lerp (material.GetFloat ("_ Blend"), 1, Time.deltaTime)); , ancak başlangıçta hızlı bir şekilde harmanlama sağlar ve ulaşmadan hemen önce durur 1. Bunu yapmanın en iyi yolu bu makalede iyi bir şekilde ortaya konmuştur: https: //chicounity3d.wordpress.com/2014/05/23/how-to-lerp-like-a-pro/ – Rtyper

+0

_Blend parametresinin aralığı 0 ila 1 arasındadır, muhtemelen Lerp'e ihtiyacınız yoktur, sadece Time.deltaTime kullanarak bir zamanlayıcı değişkeni artırabilir ve kullanabilirsiniz. – Rtyper