Noticias

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

Movimiento de los brazos.

Iniciado por ruklo, Junio 09, 2016, 10:03:39 AM

Tema anterior - Siguiente tema
Hola a todos, estoy aprendiendo a trabajar con unity, estoy atascado en el tema de las animaciones, me a parecido entender que no puedes mani***r los huesos "in game", y despues de muchas pruebas no logro entender como lograr rotar los brazos durante una animacion.
 
Imaginemos que el personaje esta corriendo sujetando un fusil, y quieres apuntar 20 grados por encima de donde esta apuntando en dicha animacion, en otros engines podia rotar huesos con independencia de la animacion con lo que se solucionaba con un par de lineas de codigo pero en unity..... ¿?¿???¿¿¿???

Puedes hacer las manos kinematicas (IK) y modificar directamente el fusil así los brazos le seguirán, también puedes modificar directamente la posición y rotación local de los huesos mediante su transform.

Si me estas diciendo que se pueden rotar los huesos desde codigo es que tengo que volver a releer mas detenidamente los manuales sobre el tema, muchas gracias.

Creo que rotando el transform que tiene un hueso rota el hueso.

Se me esta atragantando un poco el tema, creo que ni me a quedado claro como acceder al hueso. Algun ejemplo por hay en c# a ser posible?
 

   public Object MiRotaBrazo;
void Start () {
   MiRotaBrazo = GameObject.Find("Hips/Spine/Spine1/Spine2/Neck/LeftShoulder/RightArm");
}

 
 

Luego hago la prueba en algun proyecto, pero empieza por trabajar con el componente que vas a usar, en este caso el Transform, no hace falta referencia a todo el gameobject ni a Object, luego para buscar, buscas por nombre como si fueran independientes en la jerarquía, en tu caso Find("RightArm"), y de ese game object tomas el transform usando getcomponent.
 
Para empezar prueba a hacer la variable MiRotaBrazo tipo Transform y pública, de esta manera puedes asignarla desde el inspector y luego la rotas por código.

Sigo en las mismas, creo que e probado como dices. Te lo pongo con imagen y todo porsi e metido la pata en algo que estoy muy verde aun en este motor.
 
 
 

 

public float velocidadRotacion = 180;
public Transform MiRotaBrazo;
void Start () {
}
      
void Update() {
   
      if (Input.GetButton ("Horizontal")) {
         MiRotaBrazo.transform.Rotate(0,(Input.GetAxis("Mouse Y") *velocidadRotacion) * Time.deltaTime,0);
      }

 
 

Me parece haber leído que funciona así pero en el LateUpdate()...

Bueno, alguien pasara por el hilo que halla usado huesos, espero.

Etiquetas: