Autor Tema: Ayuda para el control de un objeto 3D  (Leído 346 veces)

Jubbbey

  • New Jammer
  • *
  • Mensajes: 30
  • Molas: 2
Ayuda para el control de un objeto 3D
« en: 02 de Octubre de 2016, 05:51:11 pm »
Hola amigos programadores.
Necesitaría una pequeña ayuda. Tengo un objeto en 3d controlado por el joystick táctil. Se mueve en los ejes X y Z, pero lo que quiero es que ese objeto mire de frente hacia la dirección en la que se está moviendo. He probado varias cosas, entre ellas el uso del character controller de unity, pero no he tenido un resultado satisfactorio. Lo he hecho ahora usando un objeto el cual se mueve también con el joystick e implementando el lookat al primer objeto, de manera que siempre mira a ese segundo objeto. El resultado es bastante parecido a lo que quiero, pero no del todo, puesto que se suele quedar en ángulo entre los vectores X y Z. Alguna idea o ayuda?.  Muchas gracias!!!

manelizzard

  • New Jammer
  • *
  • Mensajes: 7
  • Molas: 4
    • github
Re:Ayuda para el control de un objeto 3D
« Respuesta #1 en: 03 de Octubre de 2016, 11:42:27 am »
Buenas!

Puedes poner el fragmento de código a ver si podemos ver algo más? Así a primera vista lo que yo intentaría sería:

1. Al detectar el movimiento del joystick:
1.1 Guardar posición actual del objeto
1.2 Calcular la posición de destino
1.3 Obtener el vector del punto original al destino
1.4 Usar el vector con la función LookAt

No sé si es esto lo que estás haciendo exactamente, por eso te pedía un poco de código ^^

A ver si lo sacamos!!

Jubbbey

  • New Jammer
  • *
  • Mensajes: 30
  • Molas: 2
Re:Ayuda para el control de un objeto 3D
« Respuesta #2 en: 08 de Octubre de 2016, 07:07:06 pm »
Hola
Bueno, la base del código que he hecho es esta:
void FixedUpdate()
   {
      float x = CrossPlatformInputManager.GetAxis ("Horizontal");
      float z = CrossPlatformInputManager.GetAxis ("Vertical");

               Vector3 vel = new Vector3 (rg.velocity.x,0,rg.velocity.y);
      x *= velocidad;
      z *= velocidad;
      vel.x = x;
      vel.z = z;
      rg.velocity = vel;

Eso es básicamente para moverse. Luego he ido quitando y poniendo cosas para lo de la rotación, pero como dije, sin un resultado óptimo.
Dices detectar el movimiento del Joystick, pero no se exáctamente como podría hacerlo.
Guardar la posición actual si.
Calcular la posición de destino no tengo idea de cómo podría hacerlo, ergo obtener el vector tampoco.