Sistema de Cableado para Unity

Introducción

En este artícu­lo pre­sen­to una solu­ción para crear de man­era automáti­ca cables que cuel­gan des­de dos o más pun­tos. El sis­tema nos per­mite mod­i­ficar el espe­sor del cable, la cur­vatu­ra y más parámet­ros para lograr el resul­ta­do que queramos.

El cable se dibu­ja uti­lizan­do el com­po­nente Line Ren­der­er de Uni­ty por lo que se gen­era de man­era pro­ce­dur­al uti­lizan­do expre­siones matemáticas.

MIRA ESTE DESCABELLADO EXPERIMENTO

Paquete de Unity para Descargar

La solu­ción con­siste en un paque­te de Uni­ty que puedes impor­tar en tu proyec­to, esto creará una nue­va car­pe­ta en tu proyec­to con los Assets que vienen en el paquete.

GDT Wiring System
Ver­sión:1
Pub­li­ca­do:enero 5, 2020

Funcionamiento del Sistema de Cableado Automático

En la figu­ra 1 se mues­tras los Assets que vienen den­tro del paque­te. En la esce­na puedes ver un ten­di­do eléc­tri­co que gen­eré usan­do el sis­tema de cableado.

Para comen­zar a usar el sis­tema podemos arras­trar el pre­fab­ri­ca­do "GDT Wire Con­tain­er" a la jer­ar­quía (cubo azul en la figu­ra 1). Si no puedes crear un nue­vo Emp­ty GameOb­ject y asig­narle el Script "GDTWiringSys­tem" esto gener­ará automáti­ca­mente todo lo nece­sario para el fun­cionamien­to del sistema.

assets de unity para generar cables automaticamente
Fig. 1: El paque­te para descar­gar con­tiene estos assets.

El obje­to que tiene asig­na­do el Script "GDTWiringSys­tem" será el encar­ga­do de dibu­jar el cable y sus hijos serán los pun­tos des­de los cuales el cable estará colgado.

En la figu­ra 2 vemos la com­po­nente "GDTWiringSys­tem", aquí está todo lo nece­sario para dar­le for­ma al cableado.

inspector para un componente de unity para generar cables
Fig. 2: En el inspec­tor podemos mod­i­ficar los parámet­ros del cableado.

Agregar un nuevo punto para el cable

Para crear un nue­vo pun­to de sostén para el cable, sim­ple­mente haz clic dere­cho en el obje­to con­tene­dor y luego en Cre­ate Emp­ty, como se obser­va en la figu­ra 3. Esto creará un nue­vo hijo y el Script automáti­ca­mente le asig­nará un nombre.

No recomien­do crear nuevos hijos dupli­can­do los que ya exis­ten, ya que esto pro­duce errores internos.

jerarquia de un proyecto en unity, crear empty gameobject
Fig. 3: Para agre­gar un nue­vo pun­to al cablea­do hay que crear un nue­vo hijo en el GameOb­ject contenedor.

crear cables en unity via script
Fig. 4: Se crea un nue­vo pun­to de sostén para el cable.

En la figu­ra 4 vemos como al crear un nue­vo pun­to, aparece un nue­vo tramo de cable.

Cable cerrado

Si quer­e­mos gener­ar un cable con sus extremos unidos podemos acti­var la opción "loop­Wire", esto gener­ará un nue­vo tramo de cable que une el últi­mo pun­to con el primero.

inspector para un componente de unity para generar cables
Fig. 5: La opción loop­Wire hace que el últi­mo pun­to del cable se conecte con el primero.

En la figu­ra 6 vemos que el cable se ha cerrado.

cables en unity con componente line renderer
Fig. 6: Con la opción loop­Wire vemos que el cable for­ma una cur­va cerrada.

Suavidad del Cable

El parámetro sub­di­vi­siones nos per­mite ele­gir la can­ti­dad de seg­men­tos que habrán entre dos pun­tos del cable, ini­cial­mente vale 1, lo cual impli­ca que los pun­tos del cable se unen con líneas rec­tas, para que el cable ten­ga cur­vatu­ra debe­mos ele­gir un parámetro de sub­di­visión may­or a 1.

Cuan­to may­or sean las sub­di­vi­siones, más suave será la cur­vatu­ra del cable. El máx­i­mo del ran­go está setea­do en 15 pero puede aumen­tarse abrien­do el Script y mod­i­f­i­can­do la instruc­ción "[Range(1,15)]" con el val­or que se necesite.

inspector para un componente de unity para generar cables
Fig. 7: Si aumen­ta­mos las sub­di­vi­siones con­seguire­mos cur­vas más suaves.

Curvatura del Cable

Para mod­i­ficar la con­cavi­dad del cable, es decir qué tan inten­sa es su cur­vatu­ra, ten­emos los Slid­ers den­tro del vec­tor "Cur­va­ture Para­me­ters", como vemos en la figu­ra 8. Estos Slid­ers nos per­mi­tirán mod­i­ficar la cur­vatu­ra de cada tramo de cable de man­era individual.

El ran­go de estos Slid­ers por defec­to es de ‑3 a 3, pero si es nece­sario se puede mod­i­ficar des­de el Script en la instruc­ción "[Range(-3f,3f)]" escri­bi­en­do el val­or que se necesite.

inspector para un componente de unity para generar cables
Fig. 8: Los parámet­ros de cur­vatu­ra nos per­miten ajus­tar la con­cavi­dad de cada tramo de cable.

Animación

En caso de nece­si­tar ani­mar el cable, agregué un bool lla­ma­do "isAn­i­mat­ed­Wire", al acti­var­lo el cable se dibu­jará en cada eje­cu­ción de FixedUp­date que por defec­to se eje­cu­ta cada 20 mili segundos.

Resultado

Uti­lizan­do esta solu­ción podremos dibu­jar, de man­era automáti­ca, cables sus­pendi­dos des­de dos o más pun­tos. Podemos agre­gar tan­tos pun­tos como quer­amos y mod­i­ficar la cur­vatu­ra de cada tramo de man­era individual.

El cable se gen­er­a­do con el com­po­nente LineRen­der­er y uti­lizan­do expre­siones matemáticas.

cables en unity con componente line renderer
Fig. 9: Al aumen­tar las sub­di­vi­siones se puede apre­ciar la cur­vatu­ra del cable.

YouTube
Scroll al inicio
Secured By miniOrange