domingo, 23 de março de 2014

Efeito de transição fade in e fade out na Unity

Olá pessoal, neste post irei mostrar um script que é capaz de fazer um efeito muito interessante de transição fade in e fade out na Unity.

O efeito de Fade é basicamente uma transição suave entre duas imagens com a opacidade de uma diminuindo até se tornar invisível e revelando a de baixo, neste caso a imagem do efeito será preta no tamanho 1x1.

Como a imagem é toda preta nós não precisamos que ela tenha o tamanho da tela, o que vamos fazer é escalona-la, isso é simples basta utilizar o método:

function OnGUI() {
      GUI.DrawTexture(Rect(0, 0, Screen.width, Screen.height), fadeOutTexture);
}

O script .js final ficou assim:

public var fadeOutTexture : Texture2D;
public var fadeSpeed = 0.3;

var drawDepth = -1000;
private var alpha = 1.0;
private var fadeDir = -1;

function OnGUI() {

alpha += fadeDir * fadeSpeed * Time.deltaTime;
alpha = Mathf.Clamp01(alpha);

GUI.color.a = alpha;

GUI.depth = drawDepth;

GUI.DrawTexture(Rect(0, 0, Screen.width, Screen.height), fadeOutTexture);

}

function fadeIn(){
fadeDir = -1;
}

function fadeOut(){
fadeDir = 1;
}

function Start(){
alpha=1;
fadeIn();
}

Simplesmente adicione esse script a sua camera ou a um game object, coloque a textura do fade manualmente e chame fadeIn() ou fadeOut() quado quiser o efeito.

Só lembrando que fadeIn() vai do preto para transparente e fadeOut()  de transparente para preto.

Vale a pena dar uma olhada em: http://wiki.unity3d.com/index.php?title=FadeInOut

2 comentários: