Jump to content
Sign in to follow this  
nomoregames

ANSWERED Animación sin transiciones

Recommended Posts

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 by nomoregames

Share this post


Link to post
Share on other sites

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.

 

  • Like 1

Share this post


Link to post
Share on other sites

@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

 image.png

ir al inspector

image.png

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 by nomoregames

Share this post


Link to post
Share on other sites

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

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 by Igor
  • Like 1

Share this post


Link to post
Share on other sites
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.

  • Like 1

Share this post


Link to post
Share on other sites

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 by nomoregames

Share this post


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

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