Buscar..


Animación básica para correr

Este código muestra un ejemplo simple de animación en Unity.

Para este ejemplo, deberías tener 2 clips de animación; Ejecutar y inactivo. Esas animaciones deben ser movimientos Stand-In-Place. Una vez que se seleccionan los clips de animación, crear un controlador de animador. Agregue este controlador al jugador o al objeto del juego que desea animar.

Abra la ventana del animador desde la opción de Windows. Arrastre los 2 clips de animación a la ventana del animador y se crearán 2 estados. Una vez creado, use la pestaña de parámetros de la izquierda para agregar 2 parámetros, ambos como bool. Nombre uno como "PerformRun" y otro como "PerformIdle". Establezca "PerformIdle" en true.

Realice transiciones desde el estado inactivo a Ejecutar y Ejecutar a inactivo (consulte la imagen). Haga clic en Inactivo-> Ejecutar transición y en la ventana del Inspector, deseleccione HasExit. Haz lo mismo para la otra transición. Para Inactivo-> Ejecutar transición, agregue una condición: PerformIdle. Para Ejecutar-> Inactivo, agregue una condición: PerformRun. Agregue el script C # dado abajo al objeto del juego. Debe ejecutarse con animación usando el botón Arriba y rotar con los botones Izquierda y Derecha.

using UnityEngine;
using System.Collections;

public class RootMotion : MonoBehaviour {

//Public Variables
[Header("Transform Variables")]
public float RunSpeed = 0.1f;
public float TurnSpeed = 6.0f;


Animator animator;

void Start()
{
    /**
    * Initialize the animator that is attached on the current game object i.e. on which you will attach this script.
    */
    animator = GetComponent<Animator>();
}

void Update()
{
    /**
    * The Update() function will get the bool parameters from the animator state machine and set the values provided by the user.
    * Here, I have only added animation for Run and Idle. When the Up key is pressed, Run animation is played. When we let go, Idle is played.
    */
    
    if (Input.GetKey (KeyCode.UpArrow)) {
            animator.SetBool ("PerformRun", true);
            animator.SetBool ("PerformIdle", false);
        } else {
            animator.SetBool ("PerformRun", false);
            animator.SetBool ("PerformIdle", true);
        }
}

void OnAnimatorMove()
    {
        /**
         * OnAnimatorMove() function will shadow the "Apply Root Motion" on the animator. Your game objects psoition will now be determined 
         * using this fucntion.
         */
        if (Input.GetKey (KeyCode.UpArrow)){
            transform.Translate (Vector3.forward * RunSpeed);
            if (Input.GetKey (KeyCode.RightArrow)) {
                transform.Rotate (Vector3.up * Time.deltaTime * TurnSpeed);
            }
            else if (Input.GetKey (KeyCode.LeftArrow)) {
                transform.Rotate (-Vector3.up * Time.deltaTime * TurnSpeed);
            }
        }

    }


   
}

introduzca la descripción de la imagen aquí

Creación y uso de clips de animación

Este ejemplo mostrará cómo hacer y usar clips de animación para objetos de juego o jugadores.

Tenga en cuenta que los modelos utilizados en este ejemplo se descargan desde Unity Asset Store. El reproductor se descargó desde el siguiente enlace: https://www.assetstore.unity3d.com/en/#!/content/21874 .

Para crear animaciones, primero abra la ventana de animación. Puede abrirlo haciendo clic en Ventana y Seleccionar animación o presione Ctrl + 6. Seleccione el objeto del juego al que desea aplicar el clip de animación, desde la ventana de jerarquía, y luego haga clic en el botón Crear en la ventana de animación.

introduzca la descripción de la imagen aquí

Nombra tu animación (como IdlePlayer, SprintPlayer, DyingPlayer, etc.) y guárdala. Ahora, desde la ventana de animación, haga clic en el botón Agregar propiedad. Esto te permitirá cambiar la propiedad del objeto o jugador del juego con respecto al tiempo. Esto puede incluir Transformaciones como rotación, posición y escala y cualquier otra propiedad que esté asociada al objeto del juego, por ejemplo, Colisionador, Representador de malla, etc.

introduzca la descripción de la imagen aquí

Para crear una animación en ejecución para el objeto del juego, necesitarás un modelo 3D humanoide. Puede descargar el modelo desde el enlace de arriba. Siga los pasos anteriores para crear una nueva animación. Agregue una propiedad de transformación y seleccione Rotación para una de las partes del personaje.

introduzca la descripción de la imagen aquí

En este momento, su botón de Juego y los valores de Rotación en la propiedad del objeto del juego se habrían puesto rojos. Haga clic en la flecha desplegable para ver los valores de rotación X, Y y Z. El tiempo de animación predeterminado se establece en 1 segundo. Las animaciones utilizan fotogramas clave para interpolar entre valores. Para animar, agregue claves en diferentes puntos en el tiempo y cambie los valores de rotación desde la ventana del Inspector. Por ejemplo, el valor de rotación en el tiempo 0.0s puede ser 0.0. En el tiempo 0.5s, el valor puede ser 20.0 para X. En el tiempo 1.0s el valor puede ser 0.0. Podemos terminar nuestra animación en 1.0s.

La duración de la animación depende de las últimas teclas que agregue a la animación. Puede agregar más teclas para que la interpolación sea más suave.

Animación 2D Sprite

La animación Sprite consiste en mostrar una secuencia existente de imágenes o marcos.

Primero importa una secuencia de imágenes a la carpeta de activos. Cree algunas imágenes desde cero o descargue algunas desde Asset Store. (Este ejemplo utiliza este activo gratis ).

sprites de animación seleccionados

Arrastre cada imagen individual de una sola animación desde la carpeta de activos a la vista de escena. Unity mostrará un diálogo para nombrar el nuevo clip de animación.

cuadro de diálogo nombre de clip de animación

Este es un atajo útil para:

  • creando nuevos objetos de juego
  • asignando dos componentes (un Sprite Renderer y un Animator)
  • creando controladores de animación (y vinculando el nuevo componente Animator a ellos)
  • Creando clips de animación con los marcos seleccionados.

El nuevo inspector de objetos de juego que muestra los nuevos componentes.

Previsualice la reproducción en la pestaña de animación haciendo clic en Reproducir:

Vista previa de la animación 2d

Se puede usar el mismo método para crear nuevas animaciones para el mismo objeto de juego, y luego eliminar el nuevo objeto de juego y el controlador de animación. Agregue el nuevo clip de animación al controlador de animación de ese objeto de la misma manera que con la animación 3D.

Curvas de animacion

Las curvas de animación le permiten cambiar un parámetro flotante mientras se reproduce la animación. Por ejemplo, si hay una animación de 60 segundos de duración y desea un valor / parámetro flotante, llámelo X, para variar a través de la animación (como en el tiempo de animación = 0.0s; X = 0.0, en el tiempo de animación = 30.0s; X = 1.0, en tiempo de animación = 60.0s; X = 0.0).

Una vez que tenga el valor flotante, puede usarlo para traducir, rotar, escalar o usarlo de cualquier otra forma.

Para mi ejemplo, mostraré un objeto de juego de jugador en ejecución. Cuando se reproduce la animación para correr, la velocidad de traducción del jugador debe aumentar a medida que avanza la animación. Cuando la animación llega a su fin, la velocidad de traducción debe disminuir.

Tengo un clip de animación en ejecución creado. Seleccione el clip y luego en la ventana del inspector, haga clic en Editar.

introduzca la descripción de la imagen aquí

Una vez allí, desplácese hasta Curvas. Haga clic en el signo + para agregar una curva. Nombra la curva, por ejemplo, ForwardRunCurve. Haga clic en la curva en miniatura a la derecha. Se abrirá una pequeña ventana con una curva predeterminada en ella.

introduzca la descripción de la imagen aquí

Queremos una curva en forma parabólica donde sube y luego cae. Por defecto, hay 2 puntos en la línea. Puedes agregar más puntos haciendo doble clic en la curva. Arrastre los puntos para crear una forma similar a la siguiente.

introduzca la descripción de la imagen aquí

En la ventana del animador, agregue el clip en ejecución. Además, agregue un parámetro flotante con el mismo nombre que la curva, es decir, ForwardRunCurve.

Cuando se reproduce la animación, el valor flotante cambiará de acuerdo con la curva. El siguiente código mostrará cómo usar el valor flotante:

using UnityEngine;
using System.Collections;

public class RunAnimation : MonoBehaviour {

Animator animator;
float curveValue;

void Start()
{
    animator = GetComponent<Animator>();
}

void Update()
{
    curveValue = animator.GetFloat("ForwardRunCurve");

    transform.Translate (Vector3.forward * curveValue);
}

}

La variable curveValue mantiene el valor de la curva (ForwardRunCruve) en un momento dado. Estamos utilizando ese valor para cambiar la velocidad de la traducción. Puedes adjuntar este script al objeto del juego del jugador.



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow