nomoregames 35 Report post Posted June 21, 2020 (edited) Muy buenas a todos Hace ya tiempo que intento encontrar la forma de cambiar de animación sin necesidad usar las transiciones y lógica que trae consigo el animator... Me explico, en vez de hacer un booleano, hacer una transición que solo se active cuando este booleano sea true, y hacer que ese booleano sea true en el momento que yo de clic en la tecla derecha. Hacer que, directamente, al hacer clic en la tecla, se ejecute esa animación Alguna idea? Buenas noches. Edited June 22, 2020 by nomoregames Share this post Link to post Share on other sites
Igor 336 Report post Posted June 22, 2020 no entiendo bien lo que quieres. puedes igual quitar el valor quebse llama "has exit time" (o algo asi) de la transicion del animator... y entonces la transicion sera instantanea.... pero tendras que usar un bool o un trigger del animator como condicion, eso si. o puedes usar el componente viejo "animation" que no tiene transiciones. directamente le dices la animacion que quieres que reproduzca.... creo que incluso le puedes indicar el frame en el que quieres que este la animacion... no se si esto te vale porque no se si he entendido bien lo que quieres. 1 Share this post Link to post Share on other sites
nomoregames 35 Report post Posted June 22, 2020 (edited) @Igor Me explico mejor. Unity, como ya sabréis, trae consigo la herramienta animator, la cual cuenta con su lógica. Esta muy bien, pero llega un momento en el que tienes tantos estados y tantas animaciones que la pantalla de el animator parece la habitación de spiderman de adolescente... Para no liarme con todo eso, lo que busco seria el equivalente a dar clic en la animación inicial de el animator ir al inspector Y cambiar la animación que aparece en Motion, por otra cualquiera... pero por scripting (si repito tanto una palabra como por ejemplo "animator", es para que quede claro a que me refiero, no es un ictus ni nada XD) Me he explicado? PD: Jejeje, resulta que no había leído esta parte "o puedes usar el componente viejo "animation" que no tiene transiciones" haber como funciona Edited June 22, 2020 by nomoregames Share this post Link to post Share on other sites
nomoregames 35 Report post Posted June 22, 2020 Ok... he echo lo siguiente: public AnimationClip[] animations; Animation animationsController; void Start{ animationsController = GetComponent<Animation>() } void Update(){ if (Input.GetKey(KeyCode.D)){ animationController = animations[0]; } } pero no funciona... que estoy haciendo mal? Share this post Link to post Share on other sites
Igor 336 Report post Posted June 22, 2020 (edited) hola @nomoregames hace mucho mucho que no uso el "animation" pero creo que era algo asi: private Animation anim; void Start() { anim = GetComponent<Animation>(); } void Update() { if (Input.GetKey(KeyCode.D)){ anim["Walk"].speed = 0.8f; anim.Play("Walk"); } else { anim["idle"].speed = 1.5f; anim.Play("idle"); } } los nombre de las animaciones deben corresponderse con las animaciones que hayas creado para el objeto puedes ajustar la "posicion" de la animacion con "time": anim["Walk"].time = 0.0f; o con "normalizedTime" anim["Walk"].normalizedTime = 0.5f; con este (normalizedTime) la "posicion" de la animacion va de 0 a 1 0.5f seria la mitad de la aniimacion. Edited June 22, 2020 by Igor 1 Share this post Link to post Share on other sites
lightbug 832 Report post Posted June 22, 2020 18 hours ago, nomoregames said: Me explico, en vez de hacer un booleano, hacer una transición que solo se active cuando este booleano sea true, y hacer que ese booleano sea true en el momento que yo de clic en la tecla derecha. Hacer que, directamente, al hacer clic en la tecla, se ejecute esa animación Mirá los métodos públicos: https://docs.unity3d.com/ScriptReference/Animator.html Play Plays a state. PlayInFixedTime Plays a state. CrossFade Creates a crossfade from the current state to any other state using normalized times. CrossFadeInFixedTime Creates a crossfade from the current state to any other state using times in seconds. Si te sirve el "Animation" dale pa' lante. Una vez escuché a Ian Dundore (uno de los cracks de optimización en Unity) decir que el componente Animation es simple, versátil, rápido y excelente en muchas situaciones (más de las que uno se espera), que no se lo va a remover de Unity. 1 Share this post Link to post Share on other sites
nomoregames 35 Report post Posted June 22, 2020 (edited) Buenas, muchas gracias a todos por responder. Encontré esta solución https://docs.unity3d.com/ScriptReference/Animator.CrossFade.html?_ga=2.150686581.2129184227.1592770669-1543910301.1586022889 y se adapta perfectamente a mis necesidades. En todo caso, gracias de nuevo. Que tengáis un buen día. Edited June 22, 2020 by nomoregames Share this post Link to post Share on other sites