Noticias

¡RECUERDA QUE SI ERES UN NUEVO USUARIO, DEBES PRESENTARTE PARA PODER PUBLICAR MENSAJES! | TENEMOS CANAL OFICIAL DE TELEGRAM: t.me/unity3dspain

Animacioón recarga...

Iniciado por ramunda, Julio 21, 2015, 08:29:38 AM

Tema anterior - Siguiente tema
Julio 21, 2015, 11:34:34 PM #15 Ultima modificación: Julio 22, 2015, 12:19:51 AM por ramunda
Y...ya que estamos en materia :), para crear una animacion que cuando camine se le bajen los brazos y tal...seria el mismo procedimiento pero ...donde decirle que cuando aprietas la W o el arrow UP active esa animación?,o simplemente creo un script se lo añado al objeto anterior y listo? tipo tu ejemplo: 
using UnityEngine;

public class animationTest : MonoBehaviour
{
public Animation anim;

void Start ()
    {
        anim = GetComponent<Animation>();
    }

void Update ()
{
   if(Input.GetKeyDown("w"))
   {
      anim.Play("caminar");
   }
}
}
 por ejemplo?bien ya lo he echo pero me dice que ya hay un animator aqui y que no puedo meter otro , he puesto la segunda animación en el element 1, de el mismo animator pero dice que no la encuentra....hay que decirle que esta en el element 1?Lo he puesto asi:
using UnityEngine;
using System.Collections;

public class caminaarma : MonoBehaviour {

    public Animation caminar;
   
    void Start ()
    {
        caminar = GetComponent<Animation>();
    }
   
    void Update ()
    {
        if(Input.GetKeyDown("w"))
        {
            caminar.Play("caminaarma");
        }
    }
}
He arrastrado el objeto..igual que antes solo que ahora este objeto lleva 2 animaciónes la de recarga y la de caminar .....ideas? using UnityEngine;
using System.Collections;

public class caminaarma : MonoBehaviour {

public Animation caminar;

void Start ()
{
   caminar = GetComponent<Animation>();
}

void Update ()
{
   if(Input.GetKey("up"))
   {
      caminar.Play("caminararma");
   }
}
}Vale, mas escuela para os que aprenden como yo Ahora viene la chunga....todo funciona, pero solo reproduce la animación cuando le doy la primera vez a la tecla "UP" y se para , le he puesto un loop mode en la propia animación pero no para de moverse...en Once la hace una vez....alguna teoria maestro?Me autocorrijo:Si se pone en Once va perfecto se mueve al pulsar y se para al soltar!! Jur peazo tutorial estamos liando!!!           

Julio 22, 2015, 12:20:54 AM #16 Ultima modificación: Julio 22, 2015, 12:24:58 AM por Antonio
Yo sigo algo liado XD, si los brazos te han creado la animación en mecanim (con el animator y el controller) es que tiene que estar configurado para tal. Pero bueno, también se puede animar en Mecanim (que al fin y al cabo para eso existe).

Ese gráfico que muestras ahí, es el esquema por el que se basará tus animaciones, lo suyo es que añadieras varios estados (cada estado es una animación), por ejemplo, los brazos estirados cuando están quietos, moviéndose arriba y abajo cuando están andando, disparando y recargando (y cuantas más quieras, pero para hacernos una idea).

Lo siguiente sería crear propiedades para manejar esas animaciones, en la ventana del controller del animator (la del gráfico) Hay un apartado llamado Parameters, que sirve para crear esas propiedades, puedes crear por ejemplo, una de tipo float que se llame speed, y con ella, creas una conexión entre la animación de estar quieto, y la de andar, diciéndole que si speed es mayor que... 0.1, se activa la animación de andar, en caso contrario, pues vuelve a la de estar quieto. Así con las otras animaciones (un parámetro trigger llamado "disparar", si está activado, que pase a la animación de disparar, otro trigger llamado reload, para la animación de recargar.

Una vez hecho eso, falta decir, esos parámetros, ¿quien los controla? pues para ello hay que crear el código que actualice esos parámetros con las variables de tu código. Algo como:

 
using UnityEngine;


public class Player_Manager : MonoBehaviour
{

     Animator m_Animator;

     float Velocidad;
     
     void Start ()
     {
          m_Animator = GetComponent<Animator>();
     }

     void Update ()
     {
          Velocidad = 10 * Time.deltaTime * Input.GetAxis("Vertical");      
          m_Animator.SetFloat("Speed", Velocidad, 0.1f, Time.deltaTime); //El 0.1f es el tiempo que tarda en cambiar entre un valor y otro.

          if (Input.GetKeyDown ("r")
          {
              m_Animator.SetTrigger("Reloading");
          }

          if (Input.GetButtonDown ("Fire")
          {
              m_Animator.SetTrigger("Shooting");
          }
    }
}

 
[quote author=ramunda" data-ipsquote-contapp="forums" data-ipsquote-contenttype="forums" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentid="15754" data-ipsquote-contentcommentid="100557">Ahora viene la chunga....todo funciona, pero solo reproduce la animación cuando le doy la primera vez a la tecla "UP" y se para , le he puesto un loop mode en la propia animación pero no para de moverse...en Once la hace una vez....alguna teoria maestro?Me autocorrijo:Si se pone en Once va perfecto se mueve al pulsar y se para al soltar!! Jur peazo tutorial estamos liando!!! [/quote]


Esto se complica hahhaha eres un Mostruo @Adngel (en el buen sentido claro),  lo de los brazos te lo explico facil.Lo brazos estan ligados a la pistola osea pistola y brazos una pieza.Al crear la animación si, me ha creado un controller pero también me ha creado la animación normal asi que, he añadido el componente Animation al objeto que tiene la animación(pistola/brazos), le he arrastrado la animación (la buena), y ya esta y en el inspector donde cree la public le meto el objeto de el arma/brazos que es la que he creado la anim....y funciona.Y lo del mecanim lo dejo por ai por si algun dia. XDDD. Pero esto que me has puesto es muyyy interesante pero como tengo la cabeza como una holla a presion...lo dejo para mañana :),De momento ya tenemos 2 animaciones funcionando , la de recargar y la de caminar.Y lo mejor es que las he echo sobre el mismo objeto (Pistola/brazos), así se añade la segunda automaticamente en el Animator....solo he tenido que crear ese pequeño script...poner el nombre correcto...arrastrar de nuevo el gameobject en su agujero....y yata!! LOL...lo que he sudado hahhaha En fin lo dicho, mañana seguire dando guerra!!!!!!, muchas gracias y buenas noches!! 

Etiquetas: