Jump to content
UnitySpain

Search the Community

Showing results for tags 'vuelo'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Inicio
    • Proyectos
    • Offtopic
    • Unity Feeds
    • Website
  • Mesa de ayuda
    • Unity
    • Arte
    • Otras Especialidades
    • Builds & Dispositivos
  • Aportes de la Comunidad
    • Recursos
    • Eventos
    • Buenas Prácticas
  • Bolsa de trabajo & Colaboraciones
    • Ofertas y Demandas
  • Post Antiguos
    • General (Antiguo)

Blogs

  • byGui

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


Especialidad

Found 2 results

  1. Hola , Mi objetivo es crear un First Person propio para modo vuelo tipo Dron en modo Cardboard, para eso me he creado un GameObject que tiene de componentes un Rigidbody, un Capsule Collider y naturalmente el Script de la Clase Dron, que ahora os pondré, además como hija, tiene un GameObject cámara para poder hacer el cabeceo en pitch (Vertical) y en yaw (Horizontal). Este es el Script: using UnityEngine; public class DronVirtual : MonoBehaviour { //Ejes private float forward; public float yaw; private float height; private float translate; //Velocidades public float forwardSpeed; public float yawSpeed; public float heightSpeed; public float translateSpeed; private float Speed; //Variable estado private bool swap = false; //Coordenadas public Transform cam; public Transform RbFPC; void Start() { Speed = 2.5f; } //Proceso continuo void Update() { //Inputs Joysticks/Mouse translate = Input.GetAxis("Horizontal") * translateSpeed * Speed;// X Axis forward = Input.GetAxis("Vertical") * forwardSpeed * Speed; // 4th Axis yaw = Input.GetAxis("Analog X") * yawSpeed * Speed;// 3rd Axis height = Input.GetAxis("Analog Y") * heightSpeed * Speed; //Actualiza con Time.deltaTime; translate *= Time.deltaTime; height *= Time.deltaTime; forward *= Time.deltaTime; yaw *= Time.deltaTime; // Asigna valor de la Cámara (Hija) de su rotacion en EulerAngles a una variable float float eixY = cam.transform.localEulerAngles.y; //Copia valor a la rotación del GameObject Padre RbFPC.transform.rotation = Quaternion.Euler (0f, eixY, 0f); // actualiza posición GameObject Padre RbFPC.transform.Translate (translate, height, forward); } } Seguimos, Lo que busco es igualar la rotación del GameObject (FPS) que es el padre de la camara, que esta como hija, cosa que realmente en datos en el inspector puedo ver que funciona perfectamente el script, veo la rotación en Y de la camara y es exactamente igual, pero que a la hora de que el FPS siga la trayectoria hacia donde estoy mirando, que debe estar pasando? estoy fallando y donde?. Unity según la documentación trabaja internamente en Quaternions, y para nosotros, o mejor dicho para mi, lo entiendo algo mejor si la rotación la veo en ángulos, soy humano. Pero, observando mientras escribo este post, llego a la conclusión que realmente lo que veo que pasa es que la camara rota a la vez que rota mi FPS, a la vez, realmente , cada grado que gira la camara , realmente está girando 2, es decir, que en cada grado que rota la camara, el FPS rota otro más, y el total es la suma de las dos rotaciones, por lo que el razonamiento que habia hecho en ese Script, al querer copiar el eje y de la cámara era incorrecto. Al ver la rotación fisicamente desde la vista superior en la Scene , me he dado cuenta de ese fallo y donde, mi lógica fallaba contundentemente, ya que en el inspector podia ver que en el giro del primer angulo recto de la camara o del GameObject Padre, como cada uno habia recorrido sólo 45º, y no 90º los 2, por lo que la trayectoria que hacia al desplazarme hacia adelante no era la visual sino justo la mitad, si es que....enfin.Mama quiero ser Artista..... y me meto a coder...hahahaha. Una vez entendido eso, he hecho esta ñapa en el control del Dron. (Script). // solucion 2 // Creo dos vector3 y les asigno los angulos de la cámara y del fps Vector3 rotacion1 = cam.transform.localEulerAngles; Vector3 rotacion2 = RbFPC.transform.localEulerAngles; //Asigno la rotacion en Y al FPS, así el FPS gira y la camara con él rotacion2.y = rotacion1.y; // Asigno la rotacion yaw al FPS RbFPC.transform.localEulerAngles = rotacion2; // Asigno el valor de la camara en su rotacion Y a cero rotacion1.y = 0f; // Asigno la rotación resultante a la cámara cam.transform.localEulerAngles = rotacion1; Tengo que probar la Build pero en el inspector ahora sí, que hace lo que le pido. Quizás los coders, me puedan decir una forma más elegante de conseguir lo mismo. Quizás con las Constrains...no se. Primero estaba asignando mal el giro en Yaw, pero es que además es en VR, que lo complica un poco más, al ser más lento el probarlo, simplemente por desconocimiento, cómo quien manda en esos ejes desde el Cardboard, es el Head, y estoy aún entiendo su funcionamiento . No se si la solucion de obligar a la camara a estar en 0f, en ese eje Y de rotación, me puede dar problemas. ya casi está el Build. Qué opinais?. Un saludo.
  2. Alguien tiene alguna idea o referencia de cómo podría programar el movimiento de algo que se mueve bajo el mar o por el aire? Pongamos como ejemplo un tiburón esta vez. Ya que estuve pensando y la verdad el NavMeshAgent creo que no me sirve, porque solo actúa por una malla "suelo" por la cual transitar, es decir, que el tiburón solo vendría a por mí si estoy al mismo nivel que él... Algún pequeño consejo sobre esto?
×
×
  • Create New...