Jump to content
UnitySpain
Sign in to follow this  
Jhonatan00_00

ANSWERED Mensaje en consola: vector is zero (SOLUCIONADO)

Recommended Posts

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.

 

 

Edited by Jhonatan00_00

Share this post


Link to post
Share on other sites
2 hours ago, Jhonatan00_00 said:

- ¿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.

 

2 hours ago, Jhonatan00_00 said:

- ¿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

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

Hola jhonatan.

De tus dos dudas de arriba, solo tengo respuesta para una;

3 hours ago, Jhonatan00_00 said:

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?.

!= 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:7_sweat_smile:

Share this post


Link to post
Share on other sites
16 hours ago, Jhonatan00_00 said:

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.

"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.

Share this post


Link to post
Share on other sites

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!!.

 

Share this post


Link to post
Share on other sites

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 :1_grinning::91_thumbsup:

(espero no haber sonado borde :7_sweat_smile:)

Share this post


Link to post
Share on other sites
On 12/22/2019 at 1:28 PM, Jhonatan00_00 said:

- ¿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;

:66_thermometer_face:

En algo así:

empataron = golesEquipoLocal == golesEquipoVisitante; 

:27_sunglasses:

Edited by lightbug

Share this post


Link to post
Share on other sites
Sign in to follow this  

×
×
  • Create New...