Noticias

¡RECUERDA QUE SI ERES UN NUEVO USUARIO, DEBES PRESENTARTE PARA PODER PUBLICAR MENSAJES! | TENEMOS CANAL OFICIAL DE TELEGRAM: t.me/unity3dspain

2 opciones del animation

Iniciado por J4v1v1g2, Noviembre 21, 2017, 05:43:34 PM

Tema anterior - Siguiente tema
Noviembre 21, 2017, 05:43:34 PM Ultima modificación: Noviembre 21, 2017, 08:05:26 PM por pioj
Hi,una preguntilla sencilla,estoy realizando una animación de una puerta con 2 opciones en el animation,la instrucción para ejecutar la animación que tengo es:
 



   
      puerta1.GetComponent<Animation>().Play("puerta_der_1");  --> que me funciona bien.
   

[/quote]
 
La pregunta es... si hay alguna manera de llamar a la animación poniendo el numero del  "Element " en plan:
 



   
      puerta1.GetComponent<Animation>().Play("Element 0");
   

[/quote]
 
o
 



   
      puerta1.GetComponent<Animation>().Play(" 0");
   

[/quote]
 
etc...???
 

Primero te recomiendo un cacheo de Animation o una referencia por el editor.
 

public class Mono : MonoBehaviour
{
[SerializeField]
private Animation _anim;
public void PlayAnimationWithElement(int index)
{
   _anim.Play(string.format("Element {0}", index));
}
}

 
¡Aunque creería que es por nombre de Clip!
 
De ser asi podrias crear un arreglo para tratar los clips.

Noviembre 21, 2017, 07:16:39 PM #2 Ultima modificación: Noviembre 21, 2017, 07:17:13 PM por lightbug
Cita de: J4v1v1g2 date=1511282614La pregunta es... si hay alguna manera de llamar a la animación poniendo el numero del  "Element " en plan:
   


Este post me trajo recuerdos, hace mucho tiempo quería acceder al arreglo ese de clips pero no tenía idea como y lo abandoné, averiguando nuevamente me di cuenta que muchos dan algunas vueltas para obtenerlo, osea que siempre fue un poco problematico esto. Mirando esta utilidad parece justo lo que necesitas, pero está obsoleta:
 
https://docs.unity3d.com/ScriptReference/AnimationUtility.GetAnimationClips.html
 
Bueno, la cosa es que una vez que tengas el arreglo y accedas al clip de interés podés pedirle su nombre y pasarlo al argumento del Play ya que cada clip es un "object" (fijate en "inherited members"):
 
https://docs.unity3d.com/ScriptReference/AnimationClip.html
 
Si tuvieras ese arreglo (que te lo da la utilidad obsoleta esa) Podrías tener algo así:
 

Animation anim;
AnimationClip[] clips;
void Start(){
anim = puerta1.GetComponent<Animation>();      
clips = AnimationUtility.GetAnimationClips(anim);   //Supuestamente
}
//----
 
anim.Play(clips[0].name);

 
 
 
El componente Animation no corresponde al sistema "legacy"? (osea al viejo), por estas razones deberías usar animator, pero ojo, hace tanto que no hago nada de animación que quizás me equivoque.

Etiquetas: