Animacion basica de un personaje

El modelo descargado para este tutorial fue en el store de unity llamado **"Unity-chan model 1.1"** el modelo esta en UnityChan / Models / unitychan, este lo arrastras y lo llevas a la escena.

Este debe tener **Animator, Rigibody, el codigo Playanime**

**Animator**

Se debe crear de forma de ante mano un **Animator Controller** en **proyect** para poner en

**Animator / Controller**

En Avatar se debe poner el modelo que se va a usar en este caso

**Avatar / Unitychan**

**Apply Root Motion** debe estar desactivado

**Rigibody**

**Mass** 1

**Drag** 0

**Angular Drag** 0.05

**Use Gravity** desactivado

**Is Kinematic** Desactivado

**Constraints**

**Freeze Rotation X** activo **Y** activo **Z** activo

**Animator Controller**

Ademas se deben crear parametros dentro del **Animator Controller** que son

**inputH(float), inputV(float), run(bool) y jump (bool)**

Tanto para caminar y para correr se necesita un **Blend Tree**

Este es el **Blend Tree** de **caminar**

Este es el **Blend Tree** de **Correr**

El lazo de Saltar se le agrega la **condicion (Conditions) jump = true** siempre y cuando que valla a saltar o jump como de **WAIT00 a JUMP00 , caminar a JUMP00, correr a JUMP00**

Cosas a condiderar en los lazos

Si va a **caminar** a **Wait00**

**inputV great -0.1**

**inputV Less 0.1**

Si va de **Wait00** a **caminar**

**inputV great 0.1**

Si va de **caminar** a **correr**

**inputV great 0.1**

**run true**

Si va de **correr a caminar**

**run false**

y por ultimo todas las opciones deben tener desactivada **Has Exit Time**

**Codigo**

```
using UnityEngine;
using System.Collections;

public class Playeranime : MonoBehaviour
{
    public Animator playerAnim;
    public Rigidbody rbody;

    private float inputH;
    private float inputV;
    private bool run;

    void Start()
    {
        playerAnim = GetComponent<Animator>();
        rbody = GetComponent<Rigidbody>();
        run = false;
    }

    void Update()
    {
        if (Input.GetKeyDown("1"))
        {//este codigo solo dise que al apretar el botón 1 se efectúa esta acción
            playerAnim.Play("WAIT01", -1, 0f);
        }

        if (Input.GetKeyDown("2"))
        {
            playerAnim.Play("WAIT02", -1, 0f);
        }

        if (Input.GetKeyDown("3"))
        {
            playerAnim.Play("WAIT03", -1, 0f);
        }

        if (Input.GetKeyDown("4"))
        {
            playerAnim.Play("WAIT04", -1, 0f);
        }

        if (Input.GetMouseButtonDown(0))
        {
            int n = Random.Range(0, 2);

            if (n == 0)
            {
                playerAnim.Play("DAMAGED00", -1, 0f);
            }

            else
            {
                playerAnim.Play("DAMAGED01", -1, 0f);
            }
        }

        if (Input.GetKey(KeyCode.LeftShift))
        {
            run = true;
        }
        else
        {
            run = false;
        }

        if (Input.GetKey(KeyCode.Space))
        {
            playerAnim.SetBool("jump", true);
        }
        else
        {
            playerAnim.SetBool("jump", false
                );
        }

        inputH = Input.GetAxis("Horizontal");
        inputV = Input.GetAxis("Vertical");

        playerAnim.SetFloat("inputH", inputH);
        playerAnim.SetFloat("inputV", inputV);
        playerAnim.SetBool("run", run);

        float moveX = inputH * 20f * Time.deltaTime;
        float moveZ = inputV * 50f * Time.deltaTime;

        if(moveZ <= 0f)
        {
            moveX = 0f;
        }
        else if(run)
        {
            moveX = moveX*3f;
            moveZ = moveZ*3f;
        }
        rbody.velocity = new Vector3(moveX,0,moveZ);
    }

}

```