Jump to content
Sign in to follow this  
J4v1v1g2

2 opciones del animation

Recommended Posts

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:

Cita

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

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

Cita

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

o

Cita

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

etc...???

animation.jpg

Edited by pioj
Por favor, usa el <> o el "quote" para pegar código.

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites
8 hours ago, J4v1v1g2 said:

La 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.

Edited by lightbug

Share this post


Link to post
Share on other sites
Sign in to follow this  

UnitySpain © Todos los derechos reservados 2020
×
×
  • Create New...