Distancia entre dos objetos en Unity

Introducción

En este artícu­lo vamos a ver dis­tin­tas for­mas para cal­cu­lar la dis­tan­cia entre dos obje­tos en Uni­ty, esto puede ser útil por ejem­p­lo para saber a qué dis­tan­cia está el per­son­aje de un pun­to de interés, o para acti­var mecanismos.

Antes de seguir avan­zan­do con el artícu­lo dejo un vídeo de mi canal en el que mue­stro dos méto­dos para cono­cer la dis­tan­cia entre dos obje­tos en Uni­ty, jun­to con mucha infor­ma­ción extra como por ejem­p­lo datos sobre pro­gra­mación, cómo escribir la dis­tan­cia entre dos obje­tos en con­so­la y en la inter­faz gráfica.

🟢 Dos for­mas de obten­er la dis­tan­cia entre dos obje­tos en Uni­ty
 

Preparar la escena

Vamos a armar una esce­na muy sim­ple que ten­drá dos esferas con tex­tos en 3D para indicar el número de la esfera y la dis­tan­cia que hay entre ambas.

jerarquia de un proyecto en unity 3d
Fig. 1: Estos son los GameOb­jects en la jer­ar­quía de la escena.
script asignado que se encarga de calcular la distancia en unity
Fig. 2: Script que se va a encar­gar de los cálculos.

La cámara ten­drá asig­na­do el Script Dis­tances que es el que hará los cál­cu­los de dis­tan­cia y escribirá los val­ores en pan­talla. Como extra ten­drá un Line Ren­der­er para dibu­jar una línea des­de un obje­to al otro. Hay cam­pos para ambos obje­tos y para el indi­cador de dis­tan­cia. Además ten­emos un enum que nos per­mite ele­gir que tipo de dis­tan­cia quer­e­mos calcular.

distancia entre dos gameobjects en unity
Fig. 3: Así se ve la esce­na con los objetos.

Preparar Script Distances

El Script que va a resolver los cál­cu­los lo he lla­ma­do Dis­tances (Script com­ple­to al final del artícu­lo), en la sigu­iente figu­ra se mues­tran los cam­pos definidos en este Script jun­to con el méto­do Start.

campos y metodo start para calcular la distancia entre dos posiciones.
Fig. 4: Cam­pos y méto­do Start del Script para cal­cu­lar la dis­tan­cia entre dos GameObjects.

Ten­emos cam­pos para asig­nar los dos obje­tos, un textmesh para el indi­cador de dis­tan­cia, el enum que nos per­mite ele­gir qué dis­tan­cia quer­e­mos medir,

metodo update que calcula la distancia entre dos puntos en unity
Fig. 5: Códi­go del méto­do Update.

En el méto­do Start encon­tramos la ref­er­en­cia del Line Ren­der­er asig­na­do al GameOb­ject cámara.

En el méto­do Update vamos a hac­er los cál­cu­los, podemos ver a con­tin­uación cómo está programado.

metodos para calcular distancias en unity
Fig. 6: Méto­dos para cal­cu­lar dis­tan­cias en el espa­cio y en el plano.

Por últi­mo ten­dremos dos méto­dos que devuel­ven la dis­tan­cia en el espa­cio y en el plano XY, se obser­van en la sigu­iente figura.

Artícu­lo sobre méto­dos en pro­gra­mación, tipos de méto­dos y ejemplos

Calcular distancia entre dos objetos en el espacio – Vector3

Para empezar vamos a ver cómo cal­cu­lar la dis­tan­cia que hay entre dos obje­tos en el espa­cio, es decir con­sideran­do las tres dimen­siones de la escena.

El méto­do Cal­cu­late­Dis­tan­ceIn­Space de la figu­ra 6 es el que se encar­ga de esto. Como se obser­va, se uti­liza el méto­do Dis­tance de la clase Vector3 y como parámet­ros se envían los dos vec­tores de tres dimen­siones que quer­e­mos saber a qué dis­tan­cia están, estos vec­tores son la posi­ción de cada objeto.

Video 1: Dis­tan­cia entre dos obje­tos en el espacio.

Calcular distancia entre dos objetos en el plano – Vector2

Si esta­mos tra­ba­jan­do en 2D o si nos intere­sa cono­cer la dis­tan­cia entre dos obje­tos proyec­ta­dos sobre un plano, podemos cal­cu­lar esta dis­tan­cia usan­do sola­mente dos dimen­siones de la escena.

El méto­do Cal­cu­late­Dis­tan­ceInXY­Plane de la figu­ra 6 es el que se encar­ga de esto. Como se obser­va, se uti­liza el méto­do Dis­tance de la clase Vector2, se con­struyen dos vec­tores usan­do solo las com­po­nentes x e y de la posi­ción de los obje­tos y se pasan como parámet­ros al méto­do Dis­tance de Vector2.

Video 2: Dis­tan­cia entre dos obje­tos en el plano. 

En el sigu­iente video podemos ver la difer­en­cia entre estas dos for­mas de cal­cu­lar dis­tan­cias entre obje­tos en Unity.

Video 3: Com­para­ción dis­tan­cia entre dos obje­tos en el plano y en el espacio.

Conclusión

Hemos vis­to cómo uti­lizar las clases Vector3 y Vector2 para cal­cu­lar dis­tan­cias entre obje­tos en el espa­cio y en el plano respectivamente.

En gen­er­al en Uni­ty se tra­ba­ja en el espa­cio 3D, por lo tan­to para medir dis­tan­cias en dos dimen­siones es nece­sario proyec­tar los pun­tos en algún plano. Hay que ten­er en cuen­ta que hay var­ios planos que podemos ten­er en cuen­ta, en este caso vimos el plano XY, pero podríamos usar el plano XZ o YZ.

Anexo

Aquí se puede ver el Script com­ple­to que cal­cu­la la dis­tan­cia entre dos obje­tos en Unity.

script que se encarga de calcular distancia entre dos vectores en unity
Fig. 7: Script Dis­tances completo.

YouTube
Scroll al inicio
Secured By miniOrange