Noticias

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

Temas recientes

Mensaje en consola: vector is zero (SOLUCIONADO)

Iniciado por Jhonatan00_00, Diciembre 21, 2019, 10:05:46 PM

Tema anterior - Siguiente tema
Diciembre 21, 2019, 10:05:46 PM Ultima modificación: Diciembre 24, 2019, 01:43:27 PM por Jhonatan00_00
Buenas noches, tengo un problemilla que no se solucionar. Cada vez que uso la función Quaternion.LookRotation me aparece por consola el mensaje "Look rotation viewing vector is zero", el caso es que he observado que no solo es un mensaje interno de Unity, si no que cuando exporto mi proyecto dentro de los archivos que crea me genera un archivo donde va guardando este y todos los mensajes que se van generando durante el juego y al cabo de un tiempo el archivo va pesando mas y mas y termina convirtiéndose en un problema.
 
- ¿Por que aparece este mensaje?.
 
- ¿Cual seria la forma de evitarlo?.
 
Un saludo y gracias.
 
 
 
 

Cita de: Jhonatan00_00 date=1576962346- ¿Por que aparece este mensaje?.
   


Si estás generando un quaternion a partir de por ej LookRotation y le estás pasando un vector nulo, te va a salir este mensaje.
 
 
 
Cita de: Jhonatan00_00 date=1576962346- ¿Cual seria la forma de evitarlo?.
   


Asegurandote que el vector no sea nulo, por ej:
 

if( vector != Vector3.zero )
{
tuRotation = Quaternion.LookRotation( vector , transform.up );
}

 
No te preocupes por el operador "==" para vectores, si la diferencia es menor o igual a la mínima te va a dar cero.
 
https://docs.unity3d.com/ScriptReference/Vector3-operator_eq.html
 
"To allow for floating point inaccuracies, the two vectors are considered equal if the magnitude of their difference is less than 1e-5."
 
 
 
Saludos

Buenas tardes, estoy probando lo que me ha explicado pero no consigo que funcione porque creo que hay algo que no he entendido bien:
 
- ¿Que significa "!=" exactamente?.
 
- ¿Donde pone "vector" que debería de poner?.
 
Un saludo y gracias.

Hola jhonatan.
 
De tus dos dudas de arriba, solo tengo respuesta para una;
 
Cita de: Jhonatan00_00 date=1577032088Buenas tardes, estoy probando lo que me ha explicado pero no consigo que funcione porque creo que hay algo que no he entendido bien:
   
   
      - ¿Que significa "!=" exactamente?.
   


!= quiere decir: si no es igual que...
 
== si es igual que...
 
 
 
no se si respondo a tu duda, o por lo contrario estoy meando fuera de tiesto

Cita de: Jhonatan00_00 date=1577032088Buenas tardes, estoy probando lo que me ha explicado pero no consigo que funcione porque creo que hay algo que no he entendido bien:
   
   
      - ¿Que significa "!=" exactamente?.
   
   
      - ¿Donde pone "vector" que debería de poner?.
   
   
      Un saludo y gracias.
   


"vector" seria el vector de direccion hacia el que mirar.
 
la funcion look rotation del quaternion requiere dos vectores para calcular tu rotacion de, porejemplo, un personaje.... estos vectores son: el vector "hacia adelante" y el vector "hacia arriba" de como quieres quebedte rotado tu personaje...
 
existe otra funcion "parecida" y menos liosa para orientar un personaje (siempre que quieras una rotacion estandar, osea, "de pie").... seria la funcion lookAt del transform... que funciona dandole el vector de posicion al que debe mirar tu personaje... pero ten en cuenta que si la posicion a la qie debe mirar es mas alta o baja que su posicion se inclinara hacia arriba o abajo... si no quieres que eso pase puedes pasarle un vector nuevo con la posicion "X" y la "Z" de donde quieres que mire, pero con la posicion "Y" del personaje.

Buenas tardes y muchas gracias, ya he podido solucionar el problema!!. No lo entendía muy bien, pero era solo cuestión de poner correctamente las variables en su sitio, me ha funcionado así:
 
if (Vector3.zero != Rotacion_Final)  {

    Objetivo = Quaternion.LookRotation (Rotacion_Final);

}
 
Entiendo que el mensaje no aparece porque en cuanto detecta que el vector va a ser Zero deja de aplicar rotación... FUNCIONA!!.
 
Un saludo y felices fiestas!!.
 
 

Diciembre 24, 2019, 02:31:27 PM #6 Ultima modificación: Diciembre 24, 2019, 08:39:05 PM por nomoregames
Felices fiestas a ti también Jhonatan00_00.
 
Pero por favor, cuando tu duda se resuelva, marca la mejor respuesta para que así se muestre como answered. Es cuestión de organización.
 
En todo caso ya te lo he marcado yo como respondido y ya lo as hecho bien escribiendo al lado de el titulo lo de solucionado.
 
Felices fiestas y que no se hagan muy cortas 
 
(espero no haber sonado borde )

Diciembre 27, 2019, 04:54:45 AM #7 Ultima modificación: Diciembre 27, 2019, 01:38:01 PM por lightbug
Cita de: Jhonatan00_00 date=1577032088- ¿Que significa "!=" exactamente?.
   


Para sumar a lo ya muy bien explicado por los compañeros.
 
== significa que la expresión es "true" si el miembro izquierdo es igual que el derecho (false caso contrario). != significa lo opuesto. Viéndolo así podés convertir cosas como estas:
 

if( golesEquipoLocal == golesEquipoVisitante )
empataron = true;
else
empataron = false;

 

 
En algo así:
 

empataron = golesEquipoLocal == golesEquipoVisitante;

Etiquetas: