6. ESTRUCTURA VECTOR3 (I)




Lo primero que cabría decir de Vector3 es que, a diferencia de Object, por ejemplo, no es en sí una clase, sino una estructura. En la corta historia de la programación las estructuras surgieron antes de las clases, en los viejos tiempos de la programación procedimental, y originalmente eran poco más que una colección de variables que guardaban algún tipo de relación entre sí. Hoy por hoy, no obstante, no hay ninguna diferencia entre una estructura y una clase.

Aunque Vector3 no está contenido dentro del esquema de herencia principal de Unity, es una clase imprescindible para la creación de cualquier juego, ya que precisamente es la que permite que representemos puntos y vectores en el espacio 3D, y por ende la que nos permite trabajar con distancias y desplazamientos.

El concepto de punto, siendo sencillo cuando se entiende, a veces provoca en los recién llegados no pocas confusiones. Quizás lo mejor para captar el concepto de punto en 3D previamente tengamos que aprehender el concepto de punto en 2D. Vamos a intentar explicarlo de una manera llana, y ruego me disculpen los que ya tenían claro el concepto:

Delante vuestro posiblemente tengáis la pantalla de vuestro ordenador o del dispositivo electrónico desde el que estáis viendo estas líneas. En algún lugar de la pantalla estará seguramente el cursor del ratón, apuntando a algún punto (valga la redundancia) determinado de ésta. Si quisiéramos explicarle a alguien que no está viendo la pantalla en qué lugar está el cursor, o si meramente quisiéramos dejar por escrito de una manera fiable en qué punto exacto está ahora nuestro cursor, una buena manera de hacerlo sería decir: el cursor está X centímetros (digamos por ejemplo 16) a la derecha del borde izquierdo de la pantalla e Y centímetros por debajo del borde superior de la pantalla (pongamos 20). Así, si por ejemplo convenimos que la esquina superior izquierda de la pantalla es el punto 0,0, nuestro cursor en el mundo 2D de la pantalla estará situado en el punto 16,20.

Por lo tanto, observamos que para determinar la situación exacta de un punto necesitamos a su vez otro punto que nos sirva de referencia (Y es importante retener este concepto, sobre el que no tardaremos en volver). Así, para saber dónde está el punto al que señala el ratón necesitamos primero compararlo con el punto que tomamos como referencia, y la resta entre ambos puntos es la distancia que los separa, que es este caso ya no sería un punto sino un vector, aunque se represente igual.

Lo mismo es aplicable a las tres dimensiones, aunque a nivel intuitivo nos cueste un poco más de pillarlo. Meramente entendamos que si nuestra pantalla de ordenador no fuera plana, sino por ejemplo un holograma, para localizar el objetivo de nuestro ratón tendríamos que añadir un nuevo punto (o eje) Z, para calcular la profundidad con relación a un punto de origen (que podría ser la esquina superior izquierda más cercana a nosotros de la pantalla holográfica en 3d)

La estructura Vector3, pues, nos permite averiguar en qué punto se halla cada gameobject, cambiar su posición, calcular las distancias entre ellos, etc.

Es conveniente advertir que el tipo Vector3 no es la única clase/estructura que maneja lo relativo a puntos y desplazamientos. Cumplen funcionalidades parecidas (que no iguales) la clase Quaternion y la Matrix4X4. Existen, antes de que nos alarmemos en exceso, funciones que permiten convertir, por ejemplo, un Vector3 en un Quaternion (y viceversa), así que de momento no nos obsesionemos más de la cuenta con conceptos que nos suenen extraños.

Y tras esta extensa introducción, en el próximo capítulo empezamos con la estructura en sí.

Hasta ahora.

POSTED BY UnityScripts
DISCUSSION 3 Comments

3 Responses to : 6. ESTRUCTURA VECTOR3 (I)

  1. Unknown says:

    En los lenguajes de programación modernos, las estructuras se pasan como parámetro a las funciones o métodos "por valor", mientras que las clases lo hacen "por referencia". Esa es la diferencia entre un tipo de dato y otro.
    Por cierto, enhorabuena por el grandísimo trabajo que has llevado a cabo escribiendo este blog.

    Un saludo.

  2. Anónimo says:

    La verdad es que es un gran trabajo si, pero yo he tenido que releer tu comentario 3 veces y no se si termino de entender los conceptos.
    Lllevo ya horas programadas y muchas estudiadas pero confundo conceptos a veces porque cada sitio veo una terminología y en cada lenguaje igual.

  3. Lo que dice es que por parametro es cuando pasas el valor de la variable que esta en memoria y por referencia es cuando se crea una copia de ese valor y este se manipula, pero el original no. Esto se utiliza mucho para funciones temporales o cuando no queremos modificar un valor directamente pues lo usaremos nuevamente. Y si es un gran trabajo, por fin puedo darle algo de orden a esto de Unity, muchas gracias XD.

Leave a Reply

Con la tecnología de Blogger.