Noticias

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

Necesito Ayuda con la simulación de un robot Pa10, problema con el movimiento del robot

Iniciado por Cristit96, Junio 09, 2018, 10:47:13 PM

Tema anterior - Siguiente tema
Tengo un proyecto donde necesito simular un robot pa10, estoy haciendo uno de hinge joints para la rotación de las partes del robot pero al mover el brazo hace que se mueva al mismo tiempo el antebrazo y la muñeca, solo necesito que se muevan sin mover las demás partes.
 
Como ven en la imagen por cada parte del robot uso un rigidbody y un hinge joint, tambien el movimiento lo hago por medio del metodo rotate no se si sea por esto el problema o solo debo configurar el hinge joint
 

 
Aca adjunto el codigo de movimiento del robot
 

 

 
Agradecería su ayuda

 
 
Cita de: Cristit96 date=1528577233Como ven en la imagen por cada parte del robot uso un rigidbody y un hinge joint, tambien el movimiento lo hago por medio del metodo rotate no se si sea por esto el problema o solo debo configurar el hinge joint
   


Hola, siempre que mezcles Rotate (o cualquier método de transforms) con rigidbodies dinámicos suele terminar en problema, ya que ambos (un obj kinemático/sin RB vs un RB dinámico) se mueven de distinta manera, en uno vos determinás el movimiento (o traducido tocás la matriz final que va a tu monitor, el fin del frame), por eso se denomina determinístico (Ej transform.Rotate o transform.Translate), en el otro caso vos aplicás una entrada (ej velocity o force) y el movimiento es el resultado de una simulación cad aun delta (el fixedStep de famoso fixedUpdate, ya no tenés control directo sobre la anterior matriz).
 
--> Quizás este sea el problema? que no se cual es porque no lo especificás.
 
Si tenés un caso como este podés irte por dos caminos:
 


  1.    Usar hinge Joints y rotar, pero no con Rotate, sino utilizando "AddTorque" o si querés aplicar una fuerza específica usá "AddForceAtPosition" (el hinge joint se encarga de mantenerte un punto fijo, como ocurre en la realidad), este método no se como responderá con la jerarquía que tenés, tengo mis dudas.


  2.    Tener todo por jerarquía, (hijos y padres, por ej, si el brazo1 al rotar mueve al brazo2, pero al rotar el brazo2 no mueve al brazo1 tenés brazo 1 = padre, brazo 2 = hijo) , luego sí aplicás Rotate a quién quieras (a mi me gusta este que es como casi lo tenés, dependerá de lo que haga el brazo al final)


Una cosa, si vas a reconocer inputs y usas métodos del lado del "transform" no uses fixedUpdate, es muy notable el lag que te dá quizás en este caso no lo notes pero si estuvieras matando a golpes el botón y esperás que ocurra algo al instante se nota, usá Update más vale. Si vas a usar "método físicos" (add force por ej) usa FixedUpdate, ya que este delta se corresponde con el de las físicas. Muchas veces se suele mezclar dos métodos, el update y el fixed uno para reconocer evento "rápidos" y setear estados o falgs(por ej inputs), y el otro para realizar acciones (por ej addTorque).
 
Es decir cambia el fixed por Update, quitá todo rigidbody dinámico(podés ponerlos en kinemáticos), el rotate como lo tenés va a operar localmente, es decir bien, poné bien la jerarquía (que de la imagen debería estar bien) y debería funcionar.
 
Saludos

gracias por la respuesta pero he intentado las alternativas que me explico pero sigue el mismo problema el cual consiste en que si trato de rotar una parte en especifico de mi robot se rotan otras partes que no deseo que lo hagan; ejemplo si trato de rotar el brazo del robot hace que se rote al mismo tiempo la muñeca y el antebrazo

Etiquetas: