Hace unos días estaba haciendo las animaciones de mi juego, lo que necesitaba hacer es que cierto objeto modificara sus coordenadas “X” y “Y“.

EL problema fue cuando hice la animación y traté de agregarlo a los demás objetos, me di cuenta de la forma en la que funciona. Cuando quieres modificar cualquier propiedad del “position” de un “gameObject” mediante una animación, el “animation” agarra las propiedades del objeto en el cual estás trabajando, por lo que si tienes 10 objetos y a todos le pones la misma animación que hiciste, al ejecutar la animación todos los objetos pasaran a tener el mismo valor en las propiedades “position” por lo que hacerlo de esta forma no es viable.

Afortunadamente Unity nos permite crear animaciones por medio de código.

Para hacer esto primero hay que agregar el objeto que vamos a animar, en mi caso usaré un bloque de mi juego.

bloqueAzul

Ya que tenemos el objeto que vamos a animar, hay que agregarle un “Animation

Animation

También hay que agregar un script, al que yo llamaré “BlockScript” y en su método Start() vamos a introducir el siguiente código

float y = this.gameObject.transform.position.y;
float x = this.gameObject.transform.position.x;
float z = this.gameObject.transform.position.z;
AnimationClip clip = new AnimationClip();
clip.SetCurve(“”, typeof(Transform), “localPosition.y”, new AnimationCurve(new Keyframe(0, y), new Keyframe(0.1f, y + 0.2f), new Keyframe(0.2f, y)));
clip.SetCurve(“”, typeof(Transform), “localPosition.x”, new AnimationCurve(new Keyframe(0, x)));
clip.SetCurve(“”, typeof(Transform), “localPosition.z”, new AnimationCurve(new Keyframe(0, z)));
animation.AddClip(clip, “clip”);
animation.Play(“clip”);

Ahora les explicaré un poco del código.

Las primeras 3 Lineas son para obtener la posición del objeto en el momento de crear la animación.

La siguiente creamos un objeto de “AnimationClip” este objeto es el que nos ayudará a crear la animación.

El método “SetCurve” del objeto “AnimationClip” nos sirve para agregar los “KeyFrames” de la animación. Estos “KeyFrames” son los puntitos que ponemos en el “Animator” cuando hacemos animaciones de forma manual.

KeyFrames

Lo que vamos hacer es crear estos “KeyFrames” por medio de código. Para ver los parametros del método ve la documentación de Unity. http://docs.unity3d.com/ScriptReference/AnimationClip.SetCurve.html

Una vez que ya tenemos los “KeyFrames” agregamos el “AnimationClip” al “Animator” que agregamos al objeto y le ponemos un nombre y finalmente le damos “Play” al clip que acabamos de agregar mediante su nombre.

Aprovecho para compartirles el la página de Facebook y el Twitter de mi estudio de videojuegos. Ahí podrán recibir las noticias acerca del juego que estoy desarrollando del cual les iré compartiendo un poco del código que ahí escribo mediante post.

FB: https://www.facebook.com/TosdePerroStudios

TW: https://twitter.com/TosDePerroS

Cualquier duda o problema, usen los comentarios. Saludos