REFERENCE: Animation


OBJETO

O prefixo (ponteiro, objeto-referencia) para os elementos da Classe (em JavaSript) será:

animation

Existem exceções, que apresentamos abaixo.


PROPRIEDADES


wrapMode = wrapMode.Loop                             Define sequenciamento de todas as animações do gameobject.     
           wrapMode.Once                             PingPong retorna do fim ao início etc. Usando o prefixo: 
           wrapMode.PingPong                         animation["nome"], vale só para essa animação.


isPlaying                                            Conterá booleano. Vale para todas as animações. Existe método para 
                                                     especificar uma animação.

animation["nome"].layer = n;                         Se queremos que uma animação não-loop se sobreponha
                                                     a outra (mas não a interrompa) a definimos com um layer maior.
                                                     Default é zero. Repare que o prefixo é exceção.



MÉTODOS

Stop()                                                Na realidade não é só para parar a animação atual desse gameobject
                                                      mas para reenrolar todas e preparar para início. Muito usado
                                                      no Start().

Rewind("nome")

isPlaying("nome")                                     Retorna booleano.

Play("nome")                                          Só usar quando tiver apenas uma animação isolada.

CrossFade("nome")                                     Roda a animação com transição suave da anterior, que é interrompida.

CrossFadeQueued("nome",0.3,QueueMode.CompleteOthers)  Roda a animação só quando anterior termina. 
                                                      
                                                      



LINKS PARA EXEMPLOS NO CURSO

Como nosso "demiurgo" só tem uma animação, não usamos muitos elementos dessa Classe. A primeira citação é:

nessa lição

Um uso interessante foi no script que controlava o avatar em jogos multiplayer, como parte de uma RPC:

nessa lição

Também nessa lição, como o avatar não tinha animação "idle", usamos um wrapMode.Once.


COMENTÁRIOS ADICIONAIS

A Unity Tec disponibiliza em um de seus tutoriais um modelo que você pode baixar (rightclique) para treinar o uso dessa Classe:

soldadoRobot

IMPORTANTE: Esse modelo foi desenvolvido pela Unity Tec e não é licenciado Creative Commons (como o material "normal" de nosso site) donde só pode ser usado segundo as regras de licença da Unity Tec para assets que fazem parte de seus tutoriais. Procure se informar sobre esse assunto, se não for usá-lo apenas particularmente para exercícios desse curso.

Usando essas três animações, como poderíamos programar para o jogador fazer o modelo andar com teclas de setas e atirar quando se apertar a tecla "t"?

Veja o script:

function Start(){
 //É usual se colocar todas as animações do gameobject em loop
 animation.wrapMode = WrapMode.Loop;
 //e tirar de loop só aquelas exceções
 animation["shoot"].wrapMode = WrapMode.Once;
 //Para a animação do tiro se sobrepor a ativa, sem interrompê-la
 animation["shoot"].layer = 10;
 //Inicializar todas as animações com:   
 animation.Stop();
}

function Update(){
  
  if(Input.GetAxis("Vertical") > 0.1)
   animation.CrossFade("run");
   else
    animation.CrossFade("idle");

   if(Input.GetKeyDown ("t"))
    animation.CrossFade("shoot");
}

Brinque com nossa demo (clique para ativar), que tem script acima. Atire (com "t") mantendo a tecla de "andar" pressionada para ver a sobreposição.(Demo testada no IE com plugin já instalado.)

Nessa outra demo (clique para ativar), usamos o mesmo script. Tem "controle do avatar" mas não "camera-follow". Atenção: ele demora a girar e não anda para trás! Tem som do tiro.:

<



LIÇÃO ANTERIOR PRÓXIMA LIÇÃO
ÍNDICE HOME PAGE