scieee Open visual document viewer

Desarrollo de aplicaciones para múltiples plataformas y uso de realidad virtual con Unity 3D

SELMA GARCÍA, ALEJANDRO

Abstract

Unity es una de las herramientas de desarrollo de videojuegos y aplicaciones interactivas más utilizadas en la actualidad [1]. Uno de los principales motivos de su rápida aceptación es que ofrece soporte para una gran cantidad de plataformas, de manera que tras el desarrollo de cualquier aplicación es posible generar ejecutables para todas ellas sin tener que replantear el trabajo para cada una. Sin embargo, en el proceso de trasladar un videojuego o aplicación a otros dispositivos, es recomendable considerar sus características particulares para optimizar la experiencia a nivel de control o de rendimiento, entre otros. Asimismo, Unity también da soporte a plataformas de realidad virtual, donde es especialmente interesante explorar la adaptación de aplicaciones existentes y probar con nuevas formas de control, según las posibilidades de cada dispositivo. En este proyecto se discutirán las distintas plataformas soportadas por Unity, así como sus principales características como herramienta. Se abordará el desarrollo de una aplicación en 3D que pueda servir como base para un videojuego, y su distribución en varias plataformas, así como su posterior adaptación a dispositivos de realidad virtual.

Full text

Escuela Técnica Supe io de Ingenie ía In o má ica Uni e si a Poli ècnica de València Desa ollo de aplicaciones pa a múl iples pla a o mas y uso de ealidad i ual con Uni y 3D P oyec o Final de Ca e a Ingenie ía in o má ica Au o : Alejand o Selma Ga cía Di ec o : Manuel Agus í Melcho 14 de junio de 2017 Índice gene al 1. In oducción y obje i os 4 1.1. In oducción............................ 4 1.2. Obje i os ............................. 5 1.3. Al e na i as............................ 6 1.4. Es uc u a de la memo ia . . . . . . . . . . . . . . . . . . . . 7 2. Desc ipción gene al de Uni y 9 2.1. P esen ación y ca ac e ís icas p incipales . . . . . . . . . . . . 9 2.2. Ven ajas.............................. 10 2.2.1. En o no de abajo . . . . . . . . . . . . . . . . . . . . 10 2.2.2. Po abilidad . . . . . . . . . . . . . . . . . . . . . . . . 12 2.2.3. Documen ación . . . . . . . . . . . . . . . . . . . . . . 13 2.2.4. Asse S o e e impo ación de ecu sos . . . . . . . . . . 14 3. Compa a i a en e licencias y pla a o mas sopo adas 15 3.1. Licenciasdeuso.......................... 15 3.2. Pla a o mas............................ 17 3.2.1. Windows, MacOS y GNU/Linux . . . . . . . . . . . . 17 3.2.2. WebGL .......................... 17 3.2.3. iOS............................. 17 3.2.4. And oid .......................... 18 3.2.5. Windows S o e Apps pa a Windows Phone y HoloLens 18 3.2.6. Disposi i os de ealidad i ual . . . . . . . . . . . . . 20 3.2.7. Tizen............................ 20 3.2.8. Fi eOS .......................... 21 3.2.9. Videoconsolas . . . . . . . . . . . . . . . . . . . . . . . 21 3.2.10.And oidTV........................ 22 3.2.11. OS............................ 22 3.2.12. Samsung SMART TV . . . . . . . . . . . . . . . . . . 22 1 4. Desa ollo de una aplicación 3D con Uni y 24 4.1. C eación de un nue o p oyec o . . . . . . . . . . . . . . . . . . 24 4.2. Obje os y sis emas de coo denadas . . . . . . . . . . . . . . . 25 4.3. Cons ucción del escena io . . . . . . . . . . . . . . . . . . . . 27 4.4. Iluminación de la escena . . . . . . . . . . . . . . . . . . . . . 29 4.4.1. O ganizando la je a quía de obje os . . . . . . . . . . . 30 4.5. Inco po ando al jugado . . . . . . . . . . . . . . . . . . . . . 31 4.5.1. Mi ando al ededo . . . . . . . . . . . . . . . . . . . . 32 4.5.2. Mo imien o del jugado po el escena io . . . . . . . . 38 4.6. Implemen ación de las mecánicas p incipales . . . . . . . . . . 41 4.6.1. Enemigos mó iles . . . . . . . . . . . . . . . . . . . . . 41 4.6.2. Dispa os enemigos y de ección de daño . . . . . . . . . 43 4.6.3. Golpeando enemigos . . . . . . . . . . . . . . . . . . . 49 4.6.4. Regene ación de enemigos . . . . . . . . . . . . . . . . 54 4.7. In e az de usua io (HUD) . . . . . . . . . . . . . . . . . . . . 56 4.7.1. Pan allas de ic o ia y in de juego . . . . . . . . . . . 60 5. Mejo a del aspec o g á ico y e ec os de sonido 66 5.1. Ma e iales............................. 66 5.2. Tex u as basadas en sp i es . . . . . . . . . . . . . . . . . . . 67 5.2.1. Tex u as del cielo . . . . . . . . . . . . . . . . . . . . . 68 5.3. Modelos 3D pe sonalizados . . . . . . . . . . . . . . . . . . . . 69 5.3.1. Impo ación de modelos con Blende . . . . . . . . . . 70 5.3.2. Impo ación de modelos de la Asse S o e . . . . . . . 72 5.4. E ec os de pa ículas . . . . . . . . . . . . . . . . . . . . . . . 74 5.5. Sonidos .............................. 75 5.5.1. Rep oducción de sonidos po e en os . . . . . . . . . . 77 5.6. Menúdeopciones......................... 78 6. E olución de la Realidad Vi ual y opciones disponibles en Uni y 83 6.1. De inición e his o ia . . . . . . . . . . . . . . . . . . . . . . . . 83 6.2. Pla a o mas ac uales de ealidad i ual y sopo e en Uni y . . 86 6.2.1. OculusRi ........................ 86 6.2.2. Google Ca dboa d . . . . . . . . . . . . . . . . . . . . 88 6.2.3. Dayd eam......................... 89 6.2.4. S eam VR/HTC Vi e . . . . . . . . . . . . . . . . . . . 90 6.2.5. PlayS a ion VR . . . . . . . . . . . . . . . . . . . . . . 91 6.2.6. Samsung Gea VR . . . . . . . . . . . . . . . . . . . . 92 6.2.7. Mic oso HoloLens . . . . . . . . . . . . . . . . . . . . 93 6.3. Sopo e en Uni y pa a pla a o mas de ealidad i ual . . . . . 95 2 ÍNDICE GENERAL 7. Adap ación de la aplicación a disposi i os de Realidad Vi - ual 97 7.1. Impo ación del SDK Google VR . . . . . . . . . . . . . . . . 97 7.2. Adap ación al iso Ca dboa d . . . . . . . . . . . . . . . . . 98 7.2.1. Cambios en las mecánicas . . . . . . . . . . . . . . . . 99 7.2.2. Visión es e eoscópica . . . . . . . . . . . . . . . . . . . 105 7.2.3. HUD y menú de opciones pa a iso es Ca dboa d con ga illo ...........................107 7.2.4. Compilación y despliegue en disposi i o . . . . . . . . . 109 7.3. Adap ación a iso con con olado . . . . . . . . . . . . . . . 111 7.3.1. HUD y menú de opciones pa a e sión en RV con con- olado ..........................117 7.3.2. Compilación y despliegue . . . . . . . . . . . . . . . . . 117 8. Gene ación de ejecu ables pa a o as pla a o mas 121 8.1. PC, MacOS y GNU/Linux . . . . . . . . . . . . . . . . . . . . 121 8.2. And oid ..............................122 8.3. iOS.................................125 8.4. WebGL ..............................125 9. Conclusiones y abajos u u os 127 3 Capí ulo 1 In oducción y obje i os 1.1. In oducción Uni y es una de las he amien as de desa ollo de ideojuegos y aplica- ciones in e ac i as más u ilizadas en la ac ualidad [1]. Uno de los p incipales mo i os de su ápida acep ación es que o ece sopo e pa a una g an can idad de pla a o mas, de mane a que as el desa ollo de cualquie aplicación es posible gene a ejecu ables pa a odas ellas sin ene que eplan ea el a- bajo pa a cada una. Sin emba go, en el p oceso de aslada un ideojuego o aplicación a o os disposi i os, es ecomendable conside a sus ca ac e ís icas pa icula es pa a op imiza la expe iencia a ni el de con ol o de endimien- o, en e o os. Asimismo, Uni y ambién da sopo e a pla a o mas de ealidad i ual, donde es especialmen e in e esan e explo a la adap ación de aplicaciones exis en es y p oba con nue as o mas de con ol, según las posibilidades de cada disposi i o. En es e p oyec o se discu i án las dis in as pla a o mas sopo adas po Uni y, así como sus p incipales ca ac e ís icas como he amien a. Se abo - da á el desa ollo de una aplicación en 3D que pueda se i como base pa a un ideojuego, y su dis ibución en a ias pla a o mas, así como su pos e io adap ación a disposi i os de ealidad i ual. El concep o de ealidad i ual puede e e i se a un conjun o de ecnolo- gías bas an e amplio, pe o en es e caso la adap ación es a á especialmen e en ocada a disposi i os mó iles que se puedan emplea como iso es que si- mulen un en o no idimensional, con el que el usua io pueda in e ac ua de 4 CAPÍTULO 1. INTRODUCCIÓN Y OBJETIVOS di e sas mane as. Una de las pla a o mas que hacen uso de es a ecnología es Google Ca dboa d, que pe mi e emplea un elé ono mó il y un sopo e de ca ón, o iso es de cos e ela i amen e bajo, pa a accede a la ealidad i ual de una o ma muy asequible. Es o con as a con el cos e de o os dis- posi i os mas a anzados, que u ilizan compu ado es adicionales o ha dwa e especí ico pa a ealiza el p ocesamien o necesa io, y que ienen un cos e ha- bi ualmen e mas ele ado. Figu a 1.1: Viso es Ca dboa d. Fuen e: .google.com. 1.2. Obje i os Los p incipales obje i os de es e p oyec o son los siguien es: In oduci Uni y como he amien a de desa ollo y sus pla a o mas so- po adas, haciendo hincapié en el mé odo de abajo con es a he a- mien a y en sus en ajas, des acando su po abilidad. Mos a el desa ollo paso a paso de una aplicación 3D que pueda se i como base pa a un ideojuego, cen ándose en la uncionalidad y consi- de ando su endimien o en disposi i os mó iles. El obje i o es mos a cómo se desa ollan los elemen os p incipales de un ideojuego con Uni y, que consis i á en una escena en 3D en la que el jugado en- d á que de o a a enemigos que eco en el escena io, e i ando sus dispa os. La inalidad no se á ob ene un juego con un acabado que pe mi a su dis ibución inmedia a en el me cado, sino cen a se en el p opio desa ollo y en que pueda se adap ado pos e io men e a o as 5 CAPÍTULO 1. INTRODUCCIÓN Y OBJETIVOS pla a o mas, especialmen e disposi i os mó iles y iso es de ealidad i ual, y expe imen a con sus posibilidades y mé odos de con ol. Es- o ambién condiciona á el apa ado g á ico, que no emplea á modelos y ex u as con un g an ni el de de alle, pa a e i a posibles p oblemas de endimien o en disposi i os con meno capacidad de p ocesamien o u o as limi aciones. O as posibles mejo as, como aumen a el núme- o de ni eles de juego o modos mul ijugado en ed, queda án ue a del ámbi o del p oyec o y se deja án como u u as ampliaciones que se pod ían abo da . Adap a la aplicación desa ollada a disposi i os mó iles que hagan uso de ealidad i ual, especialmen e a a és de la pla a o ma Ca dboa d ( igu a 1.1). Se pa i á de una e sión de esc i o io que pueda se ejecu- ada en o denado es pe sonales, y a pa i de ella se desa olla án o as e siones pa a cub i múl iples pla a o mas. Conc e amen e, además de la e sión de esc i o io, se implemen a á una e sión pa a disposi i os mó iles que haga uso de un acele óme o, o a e sión adap ada a la ealidad i ual pa a iso es de ca ón Ca dboa d con un sólo ga illo, y o a pa a iso es de ealidad i ual que pueda maneja se con un con olado independien e. Mos a el p oceso de compilación y despliegue en a ias pla a o mas dis in as, así como e alua la ejecución de la aplicación p obándola en es as pla a o mas. 1.3. Al e na i as Se han conside ado o os mo o es de desa ollo de ideojuegos como al- e na i as a Uni y, si emba go es e úl imo iene algunas en ajas que lo hacen el más indicado pa a el ámbi o de es e p oyec o. Los mo o es conside ados son Un eal Engine 4, desa ollado po Epic Ga- mes [2] ( igu a 1.2a) y C yEngine, desa ollado po C y ek [3] ( igu a 1.2b). Ambos ienen a ios pun os en común, po ejemplo los dos son he amien as especialmen e en ocadas al desa ollo de ideojuegos con g á icos en 3D, y disponen de opciones más a anzadas en es e aspec o pa a consegui esul a- dos más ealis as y un mejo endimien o en ha dwa e de úl ima gene ación. Uni y, po o a pa e, es á cen ado en un mé odo de desa ollo más ágil, basado en el uso del edi o y sc ip s en C# que pe mi en hace cambios y p oba los ápidamen e, y po an o iene una cu a de ap endizaje menos 6 CAPÍTULO 1. INTRODUCCIÓN Y OBJETIVOS (a) (b) Figu a 1.2: Logo ipo de Un eal Engine 4 (a) y de C yEngine (b). p onunciada. En cuan o a las pla a o mas sopo adas, ac ualmen e los es mo o es so- po an an o ideoconsolas como PC, disposi i os mó iles y ealidad i ual, aunque en sus p ime as e siones Un eal Engine y C yEngine es aban di i- gidos p incipalmen e a PC y ideoconsolas. El cos e de las licencias de uso ambién se ha enido en cuen a. C yEngine es ac ualmen e una he amien a de código abie o y usa la es comple amen e g a ui o. Uni y y Un eal Engine ambién son g a ui os pa a un uso pe sonal o académico, pe o son de pago si se hace un uso p o esional o se pe ciben ganancias po el so wa e desa ollado. En el p óximo capí ulo se discu i án con más de alle las dis in as licencias y pla a o mas disponibles en Uni y. 1.4. Es uc u a de la memo ia A con inuación se ha á un esumen de los capí ulos de los que cons a es a memo ia de p oyec o, que cub i án los obje i os plan eados: Desc ipción gene al de Uni y En es e capí ulo se p esen a el mo o de ideojuegos Uni y3D, sus ca ac e ís icas p incipales y mé odo de desa- ollo. Compa a i a en e licencias y pla a o mas Se analizan las licencias de desa ollo disponibles pa a abaja con Uni y y odas las pla a o mas ac ualmen e sopo adas. Desa ollo de una aplicación 3D con Uni y Aquí se abo da el desa o- llo de la e sión de esc i o io de la aplicación, que se i á como base 7 CAPÍTULO 1. INTRODUCCIÓN Y OBJETIVOS pa a el es o de e siones. Se mues a el desa ollo paso a paso, de a- llando las ope aciones en el edi o , manipulación de obje os y sc ip s empleados. Al inal del capí ulo se ob iene una e sión con odos los elemen os jugables que de inen el juego, y una in e az isual (HUD) con indicado es que mues an in o mación ace ca de la pa ida. Se usan o mas geomé icas básicas, sin ma e iales ni ex u as. Mejo a del aspec o g á ico y e ec os de sonido Se añaden ex u as y ma e iales a cie os elemen os del juego, además de modelos 3D im- po ados de he amien as ex e nas (Blende ) y de la Asse S o e de Uni y. También se inco po an sonidos, música, y un menú de pausa que pe mi e ajus a algunas opciones. E olución de la ealidad i ual y opciones disponibles En es e ca- pí ulo se hace un epaso de la e olución de la ealidad i ual a lo la go de la his o ia y se p esen an las pla a o mas disponibles en la ac ualidad. Adap ación de la aplicación a disposi i os de ealidad i ual En es- e capí ulo se pa e de la aplicación o iginal pa a adap a la a disposi i- os Ca dboa d de ealidad i ual. Se desa ollan dos nue as e siones: una pa a iso es de ca ón con un sólo ga illo, y o a pensada pa a se u ilizada con un con olado con a ios bo ones. Se explo an los cam- bios necesa ios en la p opia aplicación pa a adap a se a nue os mé odos de con ol en cada una de es as e siones, además de la u ilización del SDK Google VR de Uni y pa a log a el e ec o de inme sión de ealidad i ual. Gene ación de ejecu ables pa a o as pla a o mas Se de alla el p o- ceso de compilación y ejecución de la aplicación en a ias pla a o mas, y se gene a o a e sión que u iliza como mé odo de con ol el acele ó- me o de un disposi i o And oid o iOS. Conclusiones y abajos u u os En el capí ulo inal se hace un epaso gene al del abajo ealizado y de cómo se han cumplido los obje i os plan eados, así como posibles ampliaciones que se pod ían abo da pa a con inua con el p oyec o en el u u o. 8 Capí ulo 3 Compa a i a en e licencias y pla a o mas sopo adas A con inuación se compa a án las dis in as licencias de uso exis en es en Uni y y se desc ibi án b e emen e odas las pla a o mas pa a las que se pue- de desa olla con es a he amien a. 3.1. Licencias de uso Uni y se puede u iliza en la ac ualidad con cua o licencias dis in as: Pe sonal, Plus, P o y En e p ise. Pe sonal Es a es la licencia más básica, e incluye odas las p es aciones del mo o y sopo e pa a odas las pla a o mas. Usa es a licencia no iene ningún cos e, po lo que es un buen pun o de pa ida pa a usua ios que es én empezando o que no engan p e is o hace un uso p o esional de la he amien a. Las p incipales di e encias espec o a licencias supe io es son o os se icios o ecidos (como Uni y Anali ics) y un lími e a los ing esos anuales de $100.000. Plus La licencia Plus incluye odo lo o ecido en la licencia Pe sonal, ade- más de la posibilidad de cambia o elimina la pan alla con el logo ipo de Uni y que apa ece po de ec o al lanza la aplicación. También o e- ce una e sión más comple a de Uni y Anali ics, capacidad pa a más usua ios simul áneos alojados po Uni y en modos mul ijugado onli- ne, o os se icios como in o mes de ejecución, y descuen os en algunos paque es de asse s. El lími e de ing esos anuales aumen a a $200.000. El cos e de es a licencia es de $35 po pues o/mes. 15 CAPÍTULO 3. COMPARATIVA ENTRE LICENCIAS Y PLATAFORMAS SOPORTADAS P o Es a licencia es á di igida a un uso p o esional. Incluye odo lo o ecido en la licencia Plus mejo ando aún más los se icios o ecidos. Elimina el lími e a los ing esos anuales y pe mi e llega a un acue do con Uni y Technologies pa a accede al código uen e del mo o y con a a so- po e P emium, que es un se icio de aseso amien o. El cos e de es a licencia es de $125 po pues o/mes. En e p ise Es una licencia pa a o ganizaciones, que pe mi e ob ene se - icios pe sonalizados. No se indica el cos e de es a licencia, ya que la compañía ins a a pone se en con ac o con ella pa a llega a un acue do espec o al cos e y los se icios con a ados. La igu a 3.1 mues a un esumen de odo lo o ecido en cada licencia. Figu a 3.1: Licencias disponibles en Uni y. Fuen e: s o e.uni y.com. 16 CAPÍTULO 3. COMPARATIVA ENTRE LICENCIAS Y PLATAFORMAS SOPORTADAS 3.2. Pla a o mas 3.2.1. Windows, MacOS y GNU/Linux Uni y pe mi e gene a ejecu ables pa a los es p incipales sis emas ope- a i os p esen es en o denado es pe sonales. En el caso de Windows, el mo o puede u iliza las APIs g á icas Di ec 3D, OpenGL y Vulkan a pa i de la e sión 5.6 [7]. Pa a MacOS sólo puede u iliza se OpenGL, mien as que en GNU/Linux se pueden usa an o OpenGL como Vulkan. 3.2.2. WebGL WebGL es una API implemen ada en Ja asc ip que, median e el uso de HTML 5, pe mi e la ejecución de aplicaciones 3D en un na egado web ( igu a 3.2). Uni y pe mi e gene a ejecu ables pa a es a pla a o ma, a a és de compilado es que ans o man el código na i o en .NET, C# y Uni ySc ip en iche os en C++, que inalmen e se ans o man en el código Ja asc ip necesa io [8]. Figu a 3.2: Logo ipo de WebGL. 3.2.3. iOS Pa a el desa ollo de juegos o aplicaciones en disposi i os mó iles, hay que ene en cuen a que el ha dwa e es á más es anda izado que en el caso de los o denado es pe sonales, además de que suele ene meno po encia pa a p ocesa g á icos po que se usan chips in eg ados en luga de a je as g á icas dedicadas. Po ello hay que abo da el desa ollo de aplicaciones pa- a sis emas ope a i os como iOS o And oid de o ma algo di e en e. Es o incluye, po ejemplo, accede a uncionalidades como la pan alla ác il o el GPS, y ene p ecaución con el consumo de ene gía de i ado del uso de la aplicación. En el caso conc e o de Uni y pa a iOS hay o as di e encias. Si se u iliza código en Ja asc ip , el ipado dinámico es a á desac i ado po de ec o [9], ya que si sólo se u iliza ipado es á ico el endimien o mejo a conside ablemen e 17 CAPÍTULO 3. COMPARATIVA ENTRE LICENCIAS Y PLATAFORMAS SOPORTADAS en disposi i os con iOS. Es o puede causa e o es al impo a p oyec os con código exis en e en Ja asc ip , y puede soluciona se indicando explíci amen e el ipo de las a iables. Po o a pa e, al impo a iche os de audio, ídeo o ex u as, se aplica una con e sión a ipos de a chi o sopo ados po la pla a o ma, si es posible. Algunos o ma os, como ex u as en DXT, no son sopo adas en iOS. 3.2.4. And oid And oid ( igu a 3.3) es un sis ema ope a i o de código abie o basado en el ke nel de Linux y desa ollado po Google. Es uno de los sis emas más u ilizados en dispos i os mó iles, y Uni y pe mi e desa olla aplicaciones na i as pa a él, además de aplicaciones que hagan uso de ealidad i ual median e pla a o mas como Ca dboa d ( ambién sopo ada en iOS) o Day- d eam. La API u ilizada es OpenGL. Figu a 3.3: And oid 7.1 Nouga . Fuen e: wikipedia.o g. Las conside aciones a ene en cuen a son simila es a las de desa olla pa a iOS, si bien el ha dwa e es á menos es anda izado. Compila pa a An- d oid ambién equie e ene ins alados el Ja a De elopmen Ki (JDK), el p opio SDK de And oid y en caso de que se u ilice IL2CPP, el And oid Na i e De elopmen Ki (NDK) [10]. 3.2.5. Windows S o e Apps pa a Windows Phone y HoloLens Con Uni y ambién se pueden desa olla aplicaciones pa a la Windows S o e ( igu a 3.4) y ejecu a las en Windows, en disposi i os mó iles con Win- 18 CAPÍTULO 3. COMPARATIVA ENTRE LICENCIAS Y PLATAFORMAS SOPORTADAS dows Phone o en iso es HoloLens. El p oceso de compilación y dis ibución implica desa olla la aplicación en Uni y, y selecciona como pla a o ma de des ino Windows S o e Apps. Es o gene a un p oyec o de Visual S udio, con el que se puede compila y gene a el ejecu able inal. Figu a 3.4: Windows S o e. Los equisi os necesa ios pa a desa olla en es as pla a o mas dependen del SDK de Windows con el que unciona á la aplicación: Pa a el SDK Windows 8.1,Windows Phone 8.1 oUni e sal SDK 8.1, es necesa io ealiza la compilación en Windows 8.1 o supe io y dispone de Visual S udio 2013 o alguna e sión pos e io . Pa a el SDK Uni e sal Windows 10 Apps, se equie e Windows 8.1 o supe io , Visual S udio 2015 o pos e io y ene ins alado el p opio SDK Uni e sal Windows 10 Apps. Las aplicaciones pa a HoloLens son conside adas como Uni e sal Win- dows Applica ions po Mic oso , de mane a que los p ocedimien os de desa- ollo y equisi os son los mismos que los de cualquie aplicación de Windows S o e. 19 CAPÍTULO 3. COMPARATIVA ENTRE LICENCIAS Y PLATAFORMAS SOPORTADAS 3.2.6. Disposi i os de ealidad i ual Uni y pe mi e desa olla aplicaciones pa a los siguien es disposi i os de ealidad i ual: Oculus Ri , S eam VR, Google Ca dboa d, Dayd eam, PlayS a ion VR, Gea VR y Mic oso Hololens ( igu a 3.5). Es as y o as pla a o mas de ealidad i ual se a a án en de alle en su p opio capí ulo. Figu a 3.5: Pla a o mas de ealidad i ual sopo adas po Uni y. Fuen e: uni y3d.com. 3.2.7. Tizen Tizen ( igu a 3.6) es un sis ema ope a i o lib e basado en el ke nel de Linux, y cons uido inicialmen e a pa i de la pla a o ma Linux de Samsung (SLP). Funciona en odo ipo de disposi i os, incluyendo PC, disposi i os mó iles o Sma TVs. Figu a 3.6: Tizen 2.2. Uni y pe mi e gene a aplicaciones ejecu ables pa a Tizen en sma phones Samsung. El único equisi o es ins ala el SDK pa a el desa ollo de aplica- ciones en es a pla a o ma, y o o SDK pa a la ges ión de ce i icados (Tizen 20 CAPÍTULO 3. COMPARATIVA ENTRE LICENCIAS Y PLATAFORMAS SOPORTADAS (a) (b) Figu a 3.7: Videoconsolas PlayS a ion 4 (a) y Nin endo 3DS (b). Ce i ica e Ex ension SDK), que son necesa ios pa a ins ala aplicaciones en el sis ema. 3.2.8. Fi e OS Fi e OS es un sis ema ope a i o pa a mó iles desa ollado po Amazon y basado en And oid. Sus p incipales di e encias con And oid son una in e az de usua io pe sonalizada y el uso de aplicaciones p opias de Amazon que sus i uyen al so wa e de Google y que p omocionan el uso de sus p opios se icios. Las aplicaciones ejecu adas son de ipo And oid Package (APK), po an o dis ibui aplicaciones pa a es a pla a o ma a a és de Uni y sigue el mismo p ocedimien o que hace lo pa a sis emas And oid. 3.2.9. Videoconsolas Ac ualmen e se puede desa olla con Uni y pa a PlayS a ion 4 ( igu a 3.7a), Plays a ion Vi a, Xbox 360, Xbox One, Wii, WiiU, Nin endo 3DS ( i- gu a 3.7b) y Nin endo Swi ch. Po lo gene al, desa olla aplicaciones pa a es as pla a o mas equie e publica las pasando po un p oceso de ap obación que a ía según el i ula de cada una. En el caso de WiiU, Uni y es la he- amien a po de ec o que iene incluida con cada licencia de desa ollo pa a es a consola [11]. 21 CAPÍTULO 3. COMPARATIVA ENTRE LICENCIAS Y PLATAFORMAS SOPORTADAS 3.2.10. And oid TV And oid TV es un sis ema ope a i o basado en el ke nel de Linux, y o ien ado a se u ilizado en ele iso es. Es e sis ema pe mi e u iliza juegos y aplicaciones en ele iso es con una in e az simila a la de And oid en elé- onos mó iles. El p ocedimien o pa a gene a ejecu ables en es a pla a o ma es el mismo que pa a And oid, ya que se a a p ác icamen e del mismo sis- ema ope a i o y las aplicaciones se ins alan a pa i de a chi os en o ma o APK. En las opciones de compilación de Uni y hay que asegu a se que es én ma cadas las opciones And oid TV Compa ibili y yAnd oid Game ( igu a 3.8), en caso de que se a e de un juego, pa a que se pueda u iliza el mando del ele iso u o o disposi i o como con olado . Figu a 3.8: Opciones de compilación pa a And oid TV. 3.2.11. OS OS es un sis ema ope a i o desa ollado po Apple pensado pa a un- ciona en cualquie ele iso de al a de inición a a és del ep oduc o Apple TV ( igu a 3.9), que incluye un con olado . Es a basado en iOS, y pe mi e e con enidos de se icios de s eaming de ídeo y ejecu a aplicaciones des- ca gadas de la Apple S o e. Cualquie aplicación pa a iOS puede ejecu a se en OS, si bien puede se necesa io hace algunos cambios en la aplicación, como adap a la a una pan alla más g ande, pa a que la expe iencia sea óp- ima. En el caso de ideojuegos, suele se necesa io adap a los con oles al con olado de Apple TV. Uni y pe mi e gene a ejecu ables pa a OS seleccionándola como pla a- o ma a la ho a de compila . Sin emba go hay algunos equisi os: es necesa io dispone del disposi i o Apple TV de 4agene ación, el cable de conexión y el IDE XCode en su e sión 7.1 o supe io [12]. 3.2.12. Samsung SMART TV Uni y ambién o ece la posibildad de desa olla aplicaciones pa a e- le iso es Samsung SMART TV. Es os ele iso es ienen como ha dwa e un 22 CAPÍTULO 3. COMPARATIVA ENTRE LICENCIAS Y PLATAFORMAS SOPORTADAS Figu a 3.9: Disposi i o Apple TV. Fuen e: apple.com. p ocesado ARM y GPU con OpenGLES, po lo que p esen an un endi- mien o simila al de los disposi i os mó iles. Pa a ealiza la compilación desde Uni y es necesa io in oduci la di ección IP del ele iso , que puede ob ene se ácilmen e a a és de la in e az de es e. 23 Capí ulo 4 Desa ollo de una aplicación 3D con Uni y A con inuación se mos a á paso a paso cómo desa olla una aplicación que pueda se i como base pa a un ideojuego en 3D, con is as a que pueda se adap ada más adelan e a un en o no de ealidad i ual. El obje i o es cons ui una escena a pa i de o mas básicas, en la que el jugado se pueda mo e lib emen e e in e ac ua con elemen os del escena io. 4.1. C eación de un nue o p oyec o Pa a empeza hay que inicia Uni y y selecciona New ( igu a 4.1) pa a in oduci el nomb e del p oyec o y la u a donde se gua da án los iche os necesa ios. En es e caso ma ca emos la casilla 3D, ya que la aplicación a a se de es e ipo. Es o in luye en la con igu ación inicial del p oyec o, que queda á p epa ada pa a abaja en un en o no idimensional. T as pulsa C ea e P ojec , apa ece á la pan alla p incipal de Uni y con una escena acía, a excepción de la cáma a p incipal y una uen e de luz di eccional ( igu a 4.2). Si seleccionamos la cáma a que se ha c eado po de ec o, podemos e i ica en el inspec o que iene el a ibu o P ojec ion es ablecido en modo pe spec i a. Es e es el modo que debe usa se en escenas en 3D, ya que pe mi e ap ecia la p o undidad de los obje os (obje os más lejanos espec o a la cáma a se e án más pequeños, mien as que los más ce canos se e án más g andes). El o o modo que hay disponible, que es a- blece una cáma a o og á ica, elimina la sensación de p o undidad y se usa habi ualmen e pa a aplicaciones en 2D. 24 CAPÍTULO 4. DESARROLLO DE UNA APLICACIÓN 3D CON UNITY 4.5. Inco po ando al jugado El siguien e paso es añadi un jugado que puede mo e se lib emen e po el escena io que hemos c eado. El jugado end á una is a en p ime a pe - sona de odo lo que le odea, pe o no pod á e se a sí mismo, po an o de momen o pod emos ep esen a lo con un obje o 3D simple. La somb a del jugado si se á isible según su posición, así que op a emos po un obje o con o ma de cápsula (GameObjec →3DObjec →Capsule). T as añadi el obje o, podemos a as a en la je a quía la cáma a de la escena den o del obje o Capsule, que enomb a emos como Jugado . De es a o ma es como si ié amos a a és de sus ojos. Es impo an e e i ica que la posición de la cáma a (en el ec o Posi ion del componen e T ans- o m) es é a 0, ya que aho a es una posición ela i a al jugado . A pesa de ello puede se con enien e aumen a la al u a de la cáma a un poco pa- a que ealmen e pa ezca que es á si uada a la al u a de sus ojos ( igu a 4.10). Figu a 4.10: Posición de la cáma a den o del jugado . Si se obse a el obje o Jugado en el inspec o , se puede obse a que iene asociado un componen e CapsuleCollide , que Uni y inco po a au o- má icamen e. Como su nomb e indica, es e componen e si e pa a de ec a las colisiones de es e obje o con o os, pe o en es e caso nos in e esa sus i- ui lo po o o componen e de ipo Cha ac e Con olle . Es o acili a á más adelan e el a amien o de los con oles y la p og amación del compo amien- o de es e obje o como un pe sonaje. Pa a hace lo, seleccionamos el icono de la ueda den o del componen e Capsule Collide y seleccionamos Remo e 31 CAPÍTULO 4. DESARROLLO DE UNA APLICACIÓN 3D CON UNITY Componen . Si pulsamos el bo ón Add Componen , apa ecen ca ego ías donde se ag upan odo ipo de componen es que podemos añadi al obje o ac ual, en es e caso seleccionamos el componen e Physics →Cha ac e Con olle . Figu a 4.11: Jugado con componen e Capsule Collide . 4.5.1. Mi ando al ededo Pa a que el jugado pueda mi a a su al ededo usando el a ón, end e- mos que usa un sc ip que p ocese la en ada y aplique cambios a los obje os de la escena. Es o es una ope ación muy común en la me odología de abajo de Uni y, se pod ía deci que, de o ma gene al, la o ma de abaja consis e en añadi obje os a la escena y asocia sc ip s a es os obje os pa a asocia les un compo amien o de e minado. Pa a la p og amación de es e juego u iliza emos sc ip s en C#, así que c ea emos uno nue o di ec o io que llama emos sc ip s y que apa ece á en la sección de Asse s. Pa a ello se puede selecciona en el menú Asse s →C ea e →Folde , o accediendo al mismo menú si se pulsa el bo ón de echo del a- ón en la sección Asse s. A con inuación nos si uamos den o del di ec o io sc ip s, y desde el mismo menú (en Asse s →C ea e →C# Sc ip ) podemos c ea un nue o sc ip , al que llama emos Mi a Al ededo .cs. Si seleccionamos el sc ip ecién c eado, se ab i á el edi o que es é con i- gu ado po de ec o. La ins alación de Uni y 5.5 incluye dos IDEs p eins ala- dos, Visual S udio 2015 y MonoDe elop ( igu a 4.12). Pa a la ealización de 32 CAPÍTULO 4. DESARROLLO DE UNA APLICACIÓN 3D CON UNITY es e p oyec o se u iliza á el segundo, aunque la elección no impo a demasia- do, ya que el IDE se u iliza á simplemen e pa a edi a el código de los sc ip s. Figu a 4.12: Edición de un nue o sc ip en MonoDe elop. Tal y como mues a la igu a 4.13, en Edi →P e e ences →Ex e nal Tools se puede selecciona el IDE que Uni y ab i á po de ec o al edi a un sc ip . Figu a 4.13: Selección de IDE po de ec o. Lo p ime o que se puede e al ab i el sc ip Mi andoAl ededo .cs ( igu a 4.12) es que ya se ha c eado au omá icamen e una clase del mismo nomb e que el iche o, que he eda de la clase MonoBeha iou [17]. Todos los sc ip s de Uni y deben he eda de es a clase. Además, se han c eado dos mé odos, 33 CAPÍTULO 4. DESARROLLO DE UNA APLICACIÓN 3D CON UNITY S a () yUpda e(), que es án acíos. El mé odo S a () se llama á una úni- ca ez, en el momen o en el que el sc ip es é ac i o. Típicamen e aquí se inicializan las a iables y cualquie cosa que aya a se necesa ia du an e la ejecución del sc ip . Como en cualquie ideojuego, es a aplicación consis i á en un bucle in- ini o en el que en cada i e ación se p ocesa á la en ada del jugado , se ac ualiza á el es ado de la escena y és a se ol e á a dibuja en pan alla. El mé odo Upda e() es un mé odo que se llama en cada una de es as i e aciones, po an o es el p incipal mé odo que u iliza emos pa a ac ualiza el es ado del juego. Pa a implemen a el mo imien o de cabeza del jugado con el a ón, a- a emos po sepa ado el mo imien o ho izon al y el e ical. El siguien e código mues a la componen e ho izon al: Mi a Al ededo .cs using Sys em.Collec ions; using Sys em.Collec ions.Gene ic; using Uni yEngine; public class Mi a Al ededo : MonoBeha iou { public enum EjesRo acion { Ho izon al = 0, Ve ical = 1, Ambos = 2 } public EjesRo acion ejes = EjesRo acion.Ambos; public loa elocidadRo acion = 12.0 ; oid S a () { } oid Upda e () { // Mo imien o ho izon al i (ejes == EjesRo acion.Ho izon al) { ans o m.Ro a e(0, Inpu .Ge Axis("Mouse X") * elocidadRo acion, 0); } 34 CAPÍTULO 4. DESARROLLO DE UNA APLICACIÓN 3D CON UNITY else i (ejes == EjesRo acion.Ve ical) { // Mo imien o e ical } else { // Mo imien o en ambos ejes } } } Es e sc ip ya es su icien e pa a pode p oba la o ación ho izon al. Pues- o que a a a ec a al jugado , a as amos el sc ip desde el di ec o io co- espondien e has a el obje o del jugado en la is a de je a quía. En ez de a as a el sc ip ambién es posible incula lo al obje o Jugado seleccio- nándolo y añadiendo el sc ip con el bo ón Add Componen →Sc ip s. Se decla a una a iable de ipo enume ación pa a pode selecciona el eje de o ación (ho izon al, e ical o ambos, es e úl imo se á el uncionamien o no mal). De inimos ambién la elocidad de o ación. Decla a es as dos a- iables como públicas pe mi e ajus a su alo desde el inspec o de Uni y, incluso en iempo de ejecución. Es o esul a ú il pa a hace p uebas, y en es e caso selecciona el eje nos pe mi i á p oba el uncionamien o de la o ación ho izon al di ec amen e. En el mé odo Upda e() especi icamos el p ocesamien o a ealiza en cada ame: pa a el ipo de o ación ho izon al bas a con usa el mé odo Ro a e() pa a o a el obje o sob e el que es á ac uando el sc ip (en es e caso, el jugado ). El mé odo Ro a e() ecibe como pa áme o un ec o de 3 coo de- nadas (de ipo Vec o 3).Pa a o a ho izon almen e sólo ac uamos sob e el eje Y, dejando a 0 las o as dos componen es. La de ección del mo imien o del a ón se consigue con el mé odo Inpu .Ge Axis(), que ecibe una cadena indicando el eje de mo imien o del a ón, que se á el eje ho izon al. Es e alo se mul iplica po la elocidad que hayamos de inido. T as gua da el sc ip , ya podemos pulsa el bo ón Play pa a ejecu a la aplicación, y podemos comp oba que al mo e el a ón ho izon almen e am- bién lo hace la isión del jugado . Es impo an e comp oba en el inspec o de la cáma a que es é seleccionado el modo de o ación ho izon al, y pode- mos hace cambios en la elocidad de o ación pa a ob ene la más adecuada. A con inuación implemen a emos el mo imien o e ical y ambién la combinación de ambos ejes, pa a que el jugado pueda mi a al ededo lib e- men e. El siguien e código mues a el sc ip comple o: 35 CAPÍTULO 4. DESARROLLO DE UNA APLICACIÓN 3D CON UNITY Mi a Al ededo .cs using Sys em.Collec ions; using Sys em.Collec ions.Gene ic; using Uni yEngine; public class Mi a Al ededo : MonoBeha iou { public enum EjesRo acion { Ho izon al = 0, Ve ical = 1, Ambos = 2 } public EjesRo acion ejes = EjesRo acion.Ambos; public loa elocidadRo acionH = 12.0 ; public loa elocidadRo acionV = 12.0 ; public loa minAngleVe = -45.0 ; public loa maxAngleVe = 45.0 ; // o ación e ical (eje X) p i a e loa _ o acionX = 0; oid S a () { // Desac i a de ección de isicas pa a la o ación Rigidbody body = Ge Componen <Rigidbody>(); i (body != null) { body. eezeRo a ion = ue; } } oid Upda e () { // Mo imien o ho izon al i (ejes == EjesRo acion.Ho izon al) { // Aplica o ación di ec amen e ans o m.Ro a e(0, Inpu .Ge Axis("Mouse X") * elocidadRo acionH, 0); } // Mo imien o e ical else i (ejes == EjesRo acion.Ve ical) { // Calcula ángulo o ación e ical en ame ac ual _ o acionX -= Inpu .Ge Axis("Mouse Y") * elocidadRo acionV; 36 CAPÍTULO 4. DESARROLLO DE UNA APLICACIÓN 3D CON UNITY _ o acionX = Ma h .Clamp(_ o acionX, minAngleVe , maxAngleVe ); // La o ación ho izon al no se inc emen a loa o acionY = ans o m.localEule Angles.y; ans o m.localEule Angles = new Vec o 3(_ o acionX, o acionY, 0); } // Mo imien o en ambos ejes else { // Calcula ángulo o ación e ical en ame ac ual _ o acionX -= Inpu .Ge Axis("Mouse Y") * elocidadRo acionV; _ o acionX = Ma h .Clamp(_ o acionX, minAngleVe , maxAngleVe ); // Va iación o ación ho izon al loa del a = Inpu .Ge Axis("Mouse X") * elocidadRo acionH; loa o acionY = ans o m.localEule Angles.y + del a; ans o m.localEule Angles = new Vec o 3(_ o acionX, o acionY, 0); } } } La implemen ación del mo imien o e ical es algo dis in a a la del ho i- zon al, como se puede ap ecia en el código. Es o es debido a que en el p ime caso se aplicaba di ec amen e la o ación a pa i del a ón, pe o aho a es necesa io limi a el ángulo de gi o pa a e i a que el jugado pueda da una uel a comple a de a iba a abajo. Po an o en p ime luga calculamos la a iación del ángulo de o ación e ical ( espec o al eje X en el sis ema de coo denadas de Uni y) con Inpu .Ge Axis("Mouse Y"), que co esponde al mo imien o ho izon al del a ón. En cada i e ación dec emen amos es a can- idad al alo de la i e ación an e io . Despúes de calcula el ángulo a aplica , se u iliza el mé odo Clamp() pa a que es e alo no supe e el lími e de 45oo -45o. Pa a aplica la o ación que hemos calculado, la exp esamos como un Vec o 3 y la asignamos di ec amen e a la p opiedad localEule Angles del componen e T ans o m. El mé odo Ro a e() u ilizado an e io men e ealiza- ba implíci amen e es e p oceso. Si el mo imien o seleccionado iene que ene en cuen a ambos ejes, la única di e encia espec o al mo imien o e ical es que al calcula el nue o Vec o 3, inc emen amos la componen e co espondien e a la o ación ho i- 37 CAPÍTULO 4. DESARROLLO DE UNA APLICACIÓN 3D CON UNITY zon al en un alo del a, que es el alo que ob enemos di ec amen e del mo imien o ho izon al del a ón. Po úl imo, en el mé odo S a () se habili a el a ibu o eezeRo a ion del componen e RigidBody del jugado , si es á p esen e. Es o es po cues iones de endimien o, ya que al ac i a lo no se ienen en cuen a las ísicas de los obje os en la o ación del jugado . Pa a es a aplicación nos in e esa que sólo se conside e la en ada median e a ón. 4.5.2. Mo imien o del jugado po el escena io Aho a que el jugado puede mi a al ededo , implemen a emos el des- plazamien o del p opio jugado po el escena io. Es a ez el disposi i o de en ada se á el eclado, aunque el código es muy simila al u ilizado pa a de ec a el mo imien o del a ón. Pa a ello c eamos un nue o sc ip al que llama emos Mo imien oJugado .cs y lo asocia amos al el obje o Jugado . El sc ip con iene el siguien e código: Mo imien oJugado .cs using Sys em.Collec ions; using Sys em.Collec ions.Gene ic; using Uni yEngine; public class Mo imien oJugado : MonoBeha iou { public loa el = 8.0 ; p i a e Cha ac e Con olle _cha ac e Con olle ; public loa g a edad = -9.8 ; oid S a () { _cha ac e Con olle = Ge Componen <Cha ac e Con olle >(); } oid Upda e () { // en ada po eclado loa mo X = Inpu .Ge Axis("Ho izon al") * el; loa mo Z = Inpu .Ge Axis("Ve ical") * el; Vec o 3 ec o Mo = new Vec o 3(mo X, 0, mo Z); // no se puede supe a el. maxima en mo . diagonal ec o Mo = Vec o 3.ClampMagni ude( ec o Mo , el); 38 CAPÍTULO 4. DESARROLLO DE UNA APLICACIÓN 3D CON UNITY ec o Mo .y = g a edad; ec o Mo = ec o Mo * Time.del aTime; // con e sion a sis . global de coo denadas ec o Mo = ans o m.T ans o mDi ec ion( ec o Mo ); _cha ac e Con olle .Mo e( ec o Mo ); } } En el mé odo Upda e() de ec amos la pulsación de las eclas con In- pu .Ge Axis() de o ma simila a como se hizo con el a ón. Como hicimos en onces, usamos un iden i icado que ep esen a las eclas necesa ias, en es- e caso "Ho izon al"de ec a á las eclas A, D, ←y→y "Ve ical"las eclas W, S, ↑y↓. Es á asociación es á es ablecida así po de ec o, ya que son las eclas más u ilizadas en juegos en p ime a pe sona. De odas o mas es posi- ble cambia las con el Inpu Manage , accesible en Edi →P ojec Se ings → Inpu . Desde es e menú es posible cambia la con igu ación de los con oles al de alle ( igu a 4.14). Figu a 4.14: Con oles. Una ez ob enidas las componen es e ical y ho izon al del mo imien o, se mu iplican po una a iable pa a con ola la elocidad del mo imien o y se asignan a las componen es X y Z de un nue o Vec o 3. Después se usa el mé odo ClampMagni ude pa a no maliza la elocidad a la que hemos es able- cido, ya que si no se hicie a, la elocidad al despla- za se en diagonal se ía algo supe io a la expe imen- ada al desplaza se sólo e ical u ho izon almen e. También hay decla ada una a iable g a edad que asignamos a la componen e Y del ec o , y que si e pa a e i a que el juga- do pueda lo a po el escena io. A con inuación hay algunos concep os que ambién es impo an e comen- a . En p ime luga hay que ene en cuen a que has a el momen o se ha conseguido implemen a el mo imien o de los obje os cambiando su posición algunas unidades de dis ancia en cada i e ación. Sin emba go, el núme o de i e aciones que se ejecu a cada segundo es dis in a en cada máquina, depen- diendo de su capacidad de p ocesamien o. Po an o la elocidad de mo i- mien o de los obje os se ía dis in a y depende ía de la máquina que es u ie a ejecu ando la aplicación. Pa a e i a es o, una posible solución es a ia la dis ancia que ienen que desplaza se los obje os en cada i e ación pa a que la elocidad a la que se desplacen sea la misma e independien e de la máqui- na. Uni y p opo ciona el alo del aTime, disponible en la clase Time, que 39 CAPÍTULO 4. DESARROLLO DE UNA APLICACIÓN 3D CON UNITY almacena el iempo empleado en p ocesa la úl ima i e ación en segundos. Si mul iplicamos es e alo po la dis ancia a eco e en el mé odo Upda e(), conseguimos una elocidad de mo imien o independien e de la máquina. Po es e mo i o mul iplicamos el ec o de mo imien o po Time.del aTime. Po o a pa e, en el en o no de Uni y hay dos sis emas de coo denadas dis in os: el global y el local de cada obje o pa icula . Pa a desplaza al jugado , u iliza emos el mé odo Mo e() del componen e Cha ac e Con ole que le asignamos an e io men e. Es e mé odo aplica un mo imien o al obje o y ecibe como pa áme o un ec o en el sis ema de coo denadas global, así que es necesa io con e i el ec o del sis ema local al global median e el mé odo T ans o mDi ec ion(). Pa a pode accede al componen e Cha ac- e Con olle , se usa una a iable que se inicializa en S a () con el mé odo Ge Componen (). Es e es un mé odo que se u iliza muy a menudo pa a ob- ene cualquie componen e del obje o (GameObjec ) al cual es á inculado un sc ip . Con el sc ip implemen ado el jugado ya puede mo e se po el escena io, aunque hay un de alle que queda po ajus a . La g a edad se aplica sob e la componen e Y del mo imien o aplicado al jugado , pe o si es e se inclina hacia a iba o abajo cuando mi a en es as di ecciones, es e ec o cambia su di ección y la g a edad le impulsa ho izon almen e en ez de hacia abajo. Una posible solución pod ía se asocia el sc ip Mi a Al ededo .cs a la cáma a en ez de al jugado , aunque en onces el desplazamien o del jugado no end ía en cuen a hacia dónde es á mi ando. En ez de eso, asigna emos es e sc ip an o a la cáma a como al jugado , pe o es ablece emos en el inspec o que el jugado sólo o e ho izon almen e, y la cáma a sólo e i- calmen e. De es a o ma ambos obje os esponde án a la en ada desde el a ón po sepa ado: si el a ón se desplaza en ho izon al, el jugado o a á ho izon almen e, y si se desplaza en e ical, la cáma a o a á en e ical, e i ando que lo haga el jugado y cambie la di ección de la g a edad. Con es os elemen os ya enemos un p o o ipo de ideojuego que nos pe - mi e eco e en p ime a pe sona el escena io que hemos diseñado. El siguien- e paso se á añadi o os elemen os (como enemigos) con los que se pueda in e ac ua de a ias mane as. 40 CAPÍTULO 4. DESARROLLO DE UNA APLICACIÓN 3D CON UNITY el obje o Enemigo que enemos en la escena, se puede obse a que en el sc ip asociado hay una nue a casilla a la que debemos a as a el p e ab del p oyec il. Po o a pa e, ambién es impo an e que el enemigo y el jugado es én ap oximadamen e a la misma al u a, ya que en caso con a io el p ime o no de ec a ía al segundo, aunque lo u ie a delan e. Es o se puede ajus a a iando la al u a de los obje os, o al e na i amen e u ilizando el mé odo Sphe eCas () pa a de ec a un á ea más amplia en e al jugado . En la igu a 4.18 se puede e como los dos obje os es án a una al u a simila , y cómo hemos asignado el p e ab del p oyec il al sc ip IAEnemigo. Figu a 4.18: Enemigo dispa ando al jugado . Si ejecu amos la aplicación, al si ua nos en en e del enemigo apa ece á el p oyec il, aunque es a á de enido. Tend emos que asocia al p e ab su p opio sc ip pa a pone lo en mo imien o y de ec a su colisión con el jugado . El código de es e nue o sc ip , Con olP oyec il.cs, es el siguien e: Con olP oyec il.cs using Sys em.Collec ions; using Sys em.Collec ions.Gene ic; using Uni yEngine; public class Con olP oyec il : MonoBeha iou { public loa el = 5.0 ; public in ue za = 1; 47 CAPÍTULO 4. DESARROLLO DE UNA APLICACIÓN 3D CON UNITY oid Upda e () { ans o m.T ansla e(0, 0, el * Time.del aTime); } oid OnT igge En e (Collide o he ) { Con olJugado jug = o he .Ge Componen <Con olJugado >(); i (jug != null) { jug.Recibi Dispa o( ue za); } Des oy( his.gameObjec ); } } En Upda e() se ac ualiza la posición del p oyec il pa a que se mue a ha- cia adelan e. Po o a pa e enemos OnT igge En e (), que es un mé odo p ede inido en Uni y donde especi icamos el código que se ejecu a á cuando el p oyec il colisione con o o obje o (conc e amen e se de ec a la colisión con el Collide de o o obje o, que es lo que ecibe po pa áme o). A pa - i del Collide comp obamos si el obje o impac ado es el jugado . Es o se puede a e igua comp obando si el obje o iene asignado el sc ip Con olJu- gado .cs, que c ea emos a con inuación. Si el jugado es alcanzado, llamamos a un mé odo que añadi emos a Con olJugado y que mos a á po la conso- la de Uni y un mensaje. En cualquie caso, cuando el p oyec il colisione con o o obje o lo eliminamos de la escena con el mé odo Des oy(). La a iable angoMinDispa o que añadimos en IAEnemigo.cs, y que es- ablecía una dis ancia mínima en e el enemigo y el jugado pa a pode dis- pa a , e i a un p oblema que se puede p oduci si el jugado se si úa muy ce ca del enemigo y jus o en en e: en ese caso el p oyec il eco e una dis- ancia muy co a an es de des ui se, po an o el enemigo pod ía dispa a epe idamen e en un in e alo muy co o de iempo. Es o ambién se pod ía soluciona in oduciendo un pequeño e a do en e cada dispa o. Después de asigna el sc ip al p e ab del p oyec il, es necesa io ma ca la casilla Is T igge en el componen e Sphe eCollide del p e ab y añadi un componen e RigidBody (Add Componen →Physics →RigidBody) pa a que puedan de ec a se las colisiones. También desma camos la casilla Use G a i y en es e componen e pa a que al p oyec il no le a ec e la g a edad. Pa a pode ejecu a la aplicación oda ía hace al a un paso más: c ea el sc ip Con olJugado .cs al que se hace e e encia en el sc ip del p oyec il: 48 CAPÍTULO 4. DESARROLLO DE UNA APLICACIÓN 3D CON UNITY Con olJugado .cs using Sys em.Collec ions; using Sys em.Collec ions.Gene ic; using Uni yEngine; public class Con olJugado : MonoBeha iou { p i a e in _ idas; oid S a () { _ idas = 10; } public oid Recibi Dispa o(in ue za) { _ idas -= ue za; Debug.Log("Vidas: " + _ idas); } } En es e sc ip simplemen e decla amos el núme o de idas que iene el jugado y un mé odo que las dec emen a al ecibi un dispa o y las mues a po la consola. T as asigna el sc ip al jugado , inalmen e se puede p oba el juego y comp oba que el p oyec il se mue e y se de ec an las colisiones co ec amen e. 4.6.3. Golpeando enemigos En es e apa ado implemen a emos el a aque del jugado a los enemi- gos, que se ealiza á a co a dis ancia golpeándoles con un bas ón. Po el momen o lo ep esen a emos añadiendo un cilind o en la escena median e GameObjec →3D Objec →Cylinde y cambiando su amaño y posición pa a que enga o ma ala gada y quede si uado jus o en en e de la cáma a ( igu a 4.19). También ha emos que el bas ón sea un hijo del jugado en la je a quía de obje os, al igual que se hizo con la p opia cáma a. De es á o ma, sus coo denadas se án ela i as al jugado y el bas ón lo segui á cuando se mue a po la escena. Pa a e i a posibles p oblemas con las colisiones de los p oyec iles enemigos, eliminamos el componen e CapsuleCollide . A con inuación que emos que el jugado pueda golpea a los enemigos cuando es é ce ca de ellos. También se end á que comp oba que es é mi- ando a su obje i o, ya que no se ía muy ealis a si se de ec a a el golpe 49 CAPÍTULO 4. DESARROLLO DE UNA APLICACIÓN 3D CON UNITY Figu a 4.19: Bas ón del jugado . cuando el jugado es u ie a de espaldas, po ejemplo. Pa a ello modi ica e- mos el sc ip Con olJugado .cs añadiendo un mé odo Upda e(), y a iables pa a lle a la cuen a de los pun os conseguidos y los pun os máximos (nece- sa ios pa a gana una pa ida): Con olJugado .cs using Sys em.Collec ions; using Sys em.Collec ions.Gene ic; using Uni yEngine; public class Con olJugado : MonoBeha iou { p i a e in _ idas; p i a e in _pun os; p i a e in _ angoA aque; p i a e in _maxPun os; p i a e Came a _cama a; oid S a () { _ idas = 3; _pun os = 0; _maxPun os = 15; _ angoA aque = 1; 50 CAPÍTULO 4. DESARROLLO DE UNA APLICACIÓN 3D CON UNITY _cama a = Ge Componen InChild en<Came a>(); } oid Upda e() { // bo on izq a on pulsado i (Inpu .Ge MouseBu onDown(0)) { // se emi e aycas hacia el cen o de la cáma a Vec o 3 cen oCama a = new Vec o 3(_cama a.pixelWid h / 2, _cama a.pixelHeigh / 2, 0); Ray ay = _cama a.Sc eenPoin ToRay(cen oCama a); Raycas Hi hi ; i (Physics.Raycas ( ay, ou hi )) { GameObjec obje oAlcanzado = hi . ans o m.gameObjec ; IAEnemigo sc ip Enem = obje oAlcanzado.Ge Componen <IAEnemigo>(); // si es un enemigo, es á den o del ango y es á i o // ecibe golpe i (sc ip Enem != null && hi .dis ance < _ angoA aque && sc ip Enem. idas > 0) { sc ip Enem.Recibi Golpe(); _pun os++; Debug.Log("Pun os: " + _pun os); } } } } public oid Recibi Dispa o(in ue za) { _ idas -= ue za; Debug.Log("Vidas: " + _ idas); } } En el sc ip se uel e a hace uso de aycas s pa a la de ección del gol- pe. En el mé odo S a () inicializamos el ango en el que que emos de ec a al enemigo y ob enemos la cáma a p incipal, ya que end emos que hace 51 CAPÍTULO 4. DESARROLLO DE UNA APLICACIÓN 3D CON UNITY e e encia a ella en Upda e(). Pues o que an e io men e hicimos que el ob- je o de la cáma a ue a hijo del jugado , u ilizamos Ge Componen InChil- d en<Came a>(). En el p opio mé odo Upda e(), de ec amos si se ha pulsado el bo ón iz- quie do del a ón median e Inpu .Ge MouseBu onDown(0). En caso a i - ma i o, se p oyec a un aycas desde la posición de la cáma a, que se di ige hacia el cen o de la pan alla, con el mé odo Sc eenPoin ToRay(). El código que ob iene la in o mación del obje o alcanzado es simila al explicado an- e io men e, con una di e encia impo an e: en es e caso se u iliza el sc ip IAEnemigo.cs pa a sabe si el obje o es en e ec o un enemigo, y además se u iliza es e sc ip pa a llama al mé odo Recibi Golpe() en caso de que es é den o del ango de a aque. Es e mé odo enemos que añadi lo a IAEnemi- go.cs: IAEnemigo.cs public in idas; oid S a () { idas = 1; } oid Upda e() { [...] } public oid Recibi Golpe() { idas--; i ( idas < 1) { S a Co ou ine(Desapa ece ()); } } p i a e IEnume a o Desapa ece () { el = 0; ans o m.T ansla e(0, -1, 0); yield e u n new Wai Fo Seconds(0.5 ); ans o m.T ansla e(0, -1, 0); yield e u n new Wai Fo Seconds(0.5 ); ans o m.T ansla e(0, -1, 0); yield e u n new Wai Fo Seconds(0.5 ); Des oy( his.gameObjec ); 52 CAPÍTULO 4. DESARROLLO DE UNA APLICACIÓN 3D CON UNITY } Como se puede e , se añade una a iable idas pa a con ola el núme o de golpes que ienen que ecibi los enemigos pa a desapa ece . En cuan o al mé odo Recibi Golpe(), es e dec emen a el núme o de idas del enemigo y si se ago an llama a una co- u ina. Una co- u ina (Co ou ine) es básicamen e un mé odo especial que puede pausa se sin de ene el es o de la aplicación, lo cual nos puede esul a ú il pa a que los enemigos mues en una pequeña animación al desapa ece . Con S a Co ou ine() se inicia la co- u ina Desapa ece (), que mue e al enemi- go hacia abajo y se pausa du an e unos ins an es epe idamen e, has a que queda comple amen e po debajo del suelo. Cuando es o ocu e, des uimos el obje o Enemigo con Des oy(). Es a es una posibilidad a la ho a de im- plemen a pequeñas animaciones. Uni y dispone de o os sis emas pa a usa animaciones más elabo adas, que se pueden conside a a la ho a de puli el aspec o y la calidad g á ica en gene al. Con odos es os cambios el jugado ya puede golpea a los enemigos, aunque el bas ón segui á sin mo e se. Con un sc ip , Mo imien oBas on.cs, podemos cambia la posición del bas ón cada ez que el jugado pulse o suel e el bo ón izquie do del a ón: Mo imien oBas on.cs using Sys em.Collec ions; using Sys em.Collec ions.Gene ic; using Uni yEngine; public class Mo imien oBas on : MonoBeha iou { oid Upda e () { i (Inpu .Ge MouseBu onDown(0)) { // Posicion po de ec o ans o m.localRo a ion = Qua e nion.Eule (35, 90, 35); } i (Inpu .Ge MouseBu onUp(0)) { // Golpe ans o m.localRo a ion = Qua e nion.Eule (35, 90, 15); 53 CAPÍTULO 4. DESARROLLO DE UNA APLICACIÓN 3D CON UNITY } } } Pa a que el mo imien o aplicado sea el espe ado, independien emen e de la o ien ación del bas ón en la escena, se modi ica la o ación local del obje o asignándola di ec amen e a ans o m.localRo a ion. Pues o que la asignación es di ec a, debemos usa Qua e nion.Eule () pa a que se haga la con e sión al sis ema que usa Uni y pa a aplica las o aciones. 4.6.4. Regene ación de enemigos Pa a p oba los cambios hechos has a el momen o hemos enido a un único enemigo en la escena, en es e apa ado añadi emos a ios pa a que el jugado enga que busca los po el escena io. Aunque se añadie an muchos, odo enemigo de o ado no uel e a apa ece , y puede llega un momen o en el que ya no queden más enemigos. En ez de eso, p e endemos que haya en odo momen o un núme o p ede e minado de enemigos, y que el juego e - mine cuando se haya de o ado a cie o núme o de ellos o el jugado pie da odas sus idas. Pa a log a es e compo amien o, es necesa io lle a la cuen a de los enemigos que es án p esen es, y egene a a uno cada ez que sea elimi- nado. Po an o c ea emos un obje o acío, al que llama emos Regene ado , que se enca ga á de es a a ea. El obje o es a á acío po que se a a de un con olado abs ac o, que no se á isible en ningún momen o, pe o que implemen a á pa e de la lógica del juego. Median e GameObjec →C ea e Emp y c eamos el obje o acío, y lo colocamos en cualquie pa e de la escena (su posición no impo a, po simplicidad se puede coloca en el o igen) y le asignamos un nue o sc ip , Regene a Enemigo.cs: Regene a Enemigo.cs using Sys em.Collec ions; using Sys em.Collec ions.Gene ic; using Uni yEngine; public class Regene a Enemigo : MonoBeha iou { [Se ializeField] p i a e GameObjec p e ab; p i a e GameObjec _enemigo; 54 CAPÍTULO 4. DESARROLLO DE UNA APLICACIÓN 3D CON UNITY public oid Regene a() { _enemigo = Ins an ia e(p e ab) as GameObjec ; in pos = Random.Range(0, 3); swi ch (pos) { case 0: _enemigo. ans o m.posi ion = new Vec o 3(0 , 0.8 , -30 ); b eak; case 1: _enemigo. ans o m.posi ion = new Vec o 3(30 , 0.8 , -20 ); b eak; case 2: _enemigo. ans o m.posi ion = new Vec o 3(20 , 0.8 , 0 ); b eak; de aul : _enemigo. ans o m.posi ion = new Vec o 3(-15 , 0.8 , -30 ); b eak; } loa angulo = Random.Range(0, 360); _enemigo. ans o m.Ro a e(0, angulo, 0); } } Es e sc ip es simila al que se u ilizó pa a ins ancia los p oyec iles que dispa an los enemigos. Pa a que uncione co ec amen e, de la misma o ma que se hizo con el p oyec il, hay que c ea un p e ab pa a los enemigos (a pa i de cualquie GameObjec Enemigo) y a as a lo a la casilla de es e nue o sc ip . El código de ine cua o posiciones p ede inidas epa idas po el escena io. Cuando se llama a la unción Regene a(), se elige alea o iamen e una de es as posiciones y se ins ancia un nue o enemigo en ella, con una o ación ambién alea o ia. De es a o ma el jugado no pod á p edeci dón- de encon a á a los enemigos según se ayan egene ando. Sólo hace al a añadi la llamada a es a unción desde el sc ip IAEnemigo.cs, en el mé odo Recibi Golpe(): IAEnemigo.cs public oid Recibi Golpe() { 55 CAPÍTULO 4. DESARROLLO DE UNA APLICACIÓN 3D CON UNITY idas--; i ( idas < 1) { S a Co ou ine(Desapa ece ()); //se llama al sc ip que egene a un enemigo nue o GameObjec egene ado = GameObjec .Find("Regene ado "); Regene a Enemigo sc ip Reg = egene ado .Ge Componen <Regene a Enemigo>(); sc ip Reg.Regene a(); } } Ap o echando que enemos c eado el p e ab pa a los enemigos, añadi e- mos algunos más pa a que el jugado pueda encon a se a a ios desde el inicio del juego. Con es os cambios, podemos ejecu a lo y comp oba que al de o a a un enemigo apa ece uno nue o en o o luga alea o io. El núme o de enemigos se man end á cons an e. 4.7. In e az de usua io (HUD) Pa a e mina con la uncionalidad del juego, esul a con enien e ene indicado es en pan alla pa a mos a las idas del jugado y los pun os con- seguidos. En Uni y exis en p incipalmen e dos o mas de implemen a una in e az isual (o HUD): usando el sis ema adicional, disponible desde la p ime a e sión del mo o , o el nue o sis ema. El p ime o, ambién conocido como modo inmedia o, de ine odos los ele- men os únicamen e median e código, aunque en cuan o a uncionalidad es á algo limi ado en compa ación con el modo a anzado, que el más ecien e. En es e caso usa emos es e úl imo, ya que a pesa de que el HUD que amos a implemen a es bas an e minimalis a, o ece cie as en ajas. El nue o sis e- ma pe mi e de ini y manipula los elemen os de la in e az desde el p opio edi o , además de que esul a más lexible a la ho a de inclui elemen os más complejos que sólo ex o, como po ejemplo imágenes o con oles de odo ipo. Pa a comenza , añadimos un obje o de ipo Can as con GameObjec → UI →Can as, y lo enomb amos como HUD. Uni y añadi á además un ob- je o E en Sys em de o ma au omá ica, que es á elacionado con el manejo de e en os, aunque pa a lo que p e endemos implemen a no se á necesa io usa lo. Al añadi el HUD apa ece á un ecuad o que ep esen a á la pan alla, 56 CAPÍTULO 4. DESARROLLO DE UNA APLICACIÓN 3D CON UNITY } En el mé odo S a () se accede a los sc ip s de las pan allas de ic o ia y de o a, y es as se deshabili an inicialmen e. El mé odo FinPa ida() se pod á llama desde o os sc ip s, y ecibe un un alo booleano que indica si la pa ida ha acabado con ic o ia o de o a del jugado . Después llama a una co- u ina que es la que ealmen e ejecu a el código necesa io: habili a una en ana u o a según si el jugado ha ganado o pe dido, y después de una espe a de unos pocos segundos se ca ga la escena de nue o con Scene- Manage .LoadScene(). Es e mé odo ca ga la escena comple a con sus alo es iniciales, po an o la pa ida se einicia. El úl imo paso es ealiza la llamada a FinPa ida() desde Con olJuga- do .cs cuando se pie dan odas las idas o se alcancen los pun os máximos: Con olJugado .cs [...] oid Upda e() { [...] i (_pun os >= _maxPun os) { _sc ip Con olHUD.FinPa ida( ue); } [...] } public oid Recibi Dispa o(in ue za) { [...] i (_ idas < 1) { _sc ip Con olHUD.FinPa ida( alse); } [...] } En es e momen o podemos ejecu a la aplicación y comp oba que las en anas apa ecen co ec amen e al pe de odas las idas o llega al núme o de pun os obje i o, como mues an las igu as 4.24a y 4.24b. 63 CAPÍTULO 4. DESARROLLO DE UNA APLICACIÓN 3D CON UNITY (a) (b) Figu a 4.24: Pan alla de ic o ia (a) y de de o a (b). También añadi emos una pan alla de inicio que apa ece á al lanza la aplicación. Es a pan alla man end á el juego pausado, y pulsa cualquie e- cla la ocul a á y da á comienzo a la pa ida. Pa a ello la añadi emos al HUD de la misma o ma que las o as pan allas, y modi ica emos Con olHUD.cs: Con olHUD.cs [...] p i a e GameObjec _pan allaS a ; oid S a () { [...] _pan allaS a = GameObjec .Find("Pan allaS a "); // juego en pausa Time. imeScale = 0 ; } oid Upda e() { // comienza la pa ida i (_pan allaS a .ac i eInHie a chy && Inpu .anyKeyDown) { _pan allaS a .Se Ac i e( alse); Time. imeScale = 1 ; } } En S a () ob enemos una e e encia a la pan alla de inicio y ponemos el juego en pausa poniendo el a ibu o Time. imeScale a 0. En el mé odo Upda- e(), e i icamos si se ha pulsado cualquie ecla, en cuyo caso deshabili amos la pan alla y eanudamos el juego. 64 CAPÍTULO 4. DESARROLLO DE UNA APLICACIÓN 3D CON UNITY Con las ca ac e ís icas que se han implemen ado has a el momen o pode- mos deci que el juego ya iene odos los elemen os básicos necesa ios pa a conside a se e minado en cuan o a su uncionalidad, si bien queda ían pen- dien es o os aspec os como ajus a la di icul ad o puli el aspec o g á ico con modelos más de allados, ex u as, e c. 65 Capí ulo 5 Mejo a del aspec o g á ico y e ec os de sonido Has a es e pun o se han implemen ado los componen es del juego usan- do los modelos y o mas básicas que p opo ciona Uni y, dejando de lado el apa ado g á ico y sono o. En es e capí ulo abo da emos cómo mejo a el aspec o gene al, sus i uyendo pa e de los modelos exis en es po o os más elabo ados, añadiendo ex u as, sonidos y o os e ec os. Po o a pa e, ambién con iene conside a que si se p e ende ejecu a la aplicación en múl iples pla a o mas, es ecomendable no excede se con el núme o de polígonos, uen es de luz o cualquie elemen o que pueda ene un g an impac o en el endimien o, sob e odo pensando en disposi i os mó iles. 5.1. Ma e iales Comenza emos dando colo a algunos elemen os median e ma e iales. Un ma e ial en Uni y es un elemen o que con iene in o mación ace ca del aspec o de un obje o, como su colo o luminosidad. Una ez c eado puede aplica se sob e la supe icie de cualquie obje o de la escena. Pa a asigna un colo al suelo, po ejemplo, seleccionamos Asse s →C ea e →Ma e ial pa a c ea un ma e ial. C ea emos ambién un nue o di ec o io ma e iales pa a gua - da en él odos los que necesi emos. En el inspec o podemos e odas las p opiedades del ma e ial que se pueden de ini . Una de las más impo an- es es Albedo, que u iliza emos pa a de ini el colo e de del suelo ( igu a 5.1). Pa a aplica el ma e ial al suelo, bas a con a as a lo al obje o co es- pondien e, bien en la lis a de obje os en la is a de je a quía o di ec amen e 66 CAPÍTULO 5. MEJORA DEL ASPECTO GRÁFICO Y EFECTOS DE SONIDO Figu a 5.1: Selección de albedo de ma e ial. sob e el obje o en la escena. Segui emos un p ocedimien o simila pa a asigna le un ma e ial al p o- yec il que dispa an los enemigos. Es e es un caso especial, ya que se a a de un p e ab que se ins ancia con el juego en ejecución y po an o no lo enemos en la escena. Pa a asigna le el ma e ial, debemos añadi lo a p opó- si o pa a ealiza el cambio. En p ime luga c eamos un ma e ial nue o, de colo ama illo, y es ablecemos el alo de Emission a 0.1 pa a que b ille con algo de luz p opia. Después añadimos el p e ab a la escena y le asignamos el ma e ial, as lo cual aplicamos los cambios con GameObjec →Apply Chan- ges To P e ab. Con los cambios aplicados, la ins ancia del obje o ya no es necesa ia y puede elimina se de la escena. 5.2. Tex u as basadas en sp i es Además de c ea ma e iales a pa i de colo es y o as p opiedades, am- bién es posible aplica una ex u a a un obje o de la escena. Pa a ello bas a con impo a una imagen como sp i e, como se hizo en apa ados an e io es, y c ea un nue o ma e ial a pa i de ella. A menudo lo más con enien e es que la imagen sea epe ible pa a pode usa la como un ile, es deci , que po- damos coloca la misma imagen epe idamen e y no se pe ciba la sepa ación de una con la siguien e. De es a o ma se pueden c ea g andes supe icies a pa i de una pequeña imagen ( igu a 5.2). 67 CAPÍTULO 5. MEJORA DEL ASPECTO GRÁFICO Y EFECTOS DE SONIDO Figu a 5.2: Imagen empleada como ile. U iliza emos es a écnica pa a que las pa edes del escena io engan una ex u a de ablones de made a. T as impo a la imagen como sp i e [20], c eamos un nue o ma e ial y a as amos el sp i e a la p opiedad Albedo en el inspec o . También ponemos la p opiedad Smoo hness a 0 pa a que el ma e ial enga un aspec o ma e. Los pa áme os Tiling (X e Y) con olan el núme o de epe iciones de la imagen en ambos ejes. Según cada caso puede se necesa io modi ica es os alo es, en cambio con el alo de 1 po de ec o, no hay epe iciones y el sp i e se adap a a la supe icie del obje o. El esul ado de aplica las ex u as se puede ap ecia en la igu a 5.3. Figu a 5.3: Escena io con ex u as aplicadas a las pa edes. 5.2.1. Tex u as del cielo También se pueden usa ex u as pa a da le al cielo un aspec o más ealis- a que el que Uni y p opo ciona po de ec o. Es o se consigue habi ualmen e c eando lo que se conoce como un Skybox, que es una caja que odea la escena 68 CAPÍTULO 5. MEJORA DEL ASPECTO GRÁFICO Y EFECTOS DE SONIDO y que iene una ex u a de ondo en cada una de sus seis ca as. Pa a lle a lo a cabo, comenza emos ob eniendo imágenes ya p epa adas pa a usa se como Skybox [21]. Después de impo a las imágenes como sp i- es en Uni y, accedemos al inspec o en cada una de ellas, y cambiamos el pa áme o W ap Mode aClamp. Es o e i a á que las líneas de in e sección en e las ca as del cubo sean isibles. Pa a que el cielo de la sensación de se uni o me y de es a muy alejado de la escena, se usa á un ma e ial con un shade especial. En odos los ma e iales usados has a el momen o se ha em- pleado el shade S anda d que iene es ablecido po de ec o. En es a ocasión c ea emos un ma e ial al que llama emos Cielo, y cambia emos el shade a Skybox/6-sided. El inspec o del ma e ial cambia á pa a mos a 6 casillas en las que end emos que in oduci las imágenes impo adas. Po úl imo, asigna emos es e ma e ial al skybox de la escena en el menú Window → Ligh ing. Figu a 5.4: Asignación de las ex u as del cielo. 5.3. Modelos 3D pe sonalizados Sus i ui los modelos basados en o mas geomé icas básicas po o os más elabo ados puede con ibui en g an medida al acabado gene al del jue- go. Pa a u iliza modelos 3D pe sonalizados hay p incipalmen e dos opciones: ob ene los de la Asse S o e, o c ea los con he amien as ex e nas de mode- lado e impo a los después. La Asse S o e [22] es un eposi o io de ecu sos 69 CAPÍTULO 5. MEJORA DEL ASPECTO GRÁFICO Y EFECTOS DE SONIDO ealizados po la comunidad, algunos de los cuales son g a ui os y o os de pa- go. El ca álogo es ealmen e amplio, aunque si se necesi a algo muy especí ico puede se necesa io ecu i a dichas he amien as pa a ob ene exac amen e lo que se busca. 5.3.1. Impo ación de modelos con Blende Comenza emos mos ando como impo a modelos 3D pe sonalizados ea- lizados con Blende y así emplaza el aspec o que ienen los enemigos y o os elemen os. Blende es una he amien a de so wa e lib e que pe mi e modela en 3D, ealiza animaciones y odo ipo de a eas elacionadas con la elabo- ación de g á icos po compu ado . En es e caso ha emos uso de es e p og ama pa a ealiza modelos algo más complejos que los empleados has a aho a. No se en a á en mucho de alle ace ca de cómo ealiza es os modelos, ya que se a a de una he amien a ajena al p opio Uni y, pe o el p oceso consis e básicamen e en compone modelos más elabo ados a pa i de o mas básicas y de ope aciones como escalados, aslaciones y o aciones. También es posible de ini los ma e iales del modelo en Blende , o bien impo a el modelo sin ma e iales y c ea los o modi ica los en Uni y pos e io men e. Es impo an e ene en cuen a a la ho a de modela el obje o que Blende u iliza un sis ema de coo denadas dis in o (dex ógi o, a di e encia de Uni y que usa uno le ógi o). Po ello es impo an e que la o ien ación del obje o coincida con la espe ada en Uni y, especialmen e si el obje o a a es a en mo imien o, ya que modi ica los ejes locales del obje o después de habe lo expo ado puede se más complicado. 70 CAPÍTULO 5. MEJORA DEL ASPECTO GRÁFICO Y EFECTOS DE SONIDO Figu a 5.5: Expo ación de modelo 3D en Blende . Una ez engamos el modelo p epa ado, po ejemplo el de un enemigo, Blende nos pe mi e expo a lo como a chi o FBX, median e File →Expo →FBX ( igu a 5.5). De uel a en Uni y, c ea emos un nue o di ec o io, mo- delos, en el cual impo a emos es e a chi o con la opción Asse s →Impo New Asse . Jun o al modelo impo ado se c ea á au omá icamen e o o di- ec o io, Ma e ials, con los ma e iales u ilizados, si es que se ha empleado alguno. El siguien e paso es sus i ui el p e ab que hemos es ado u ilizando pa- a los enemigos po o o que u ilice el nue o modelo. Pa a ello añadimos el modelo a la escena y le asignamos el sc ip IAEnemigo.cs, así como el p e ab del p oyec il al sc ip pa a que pueda dispa a lo. El nue o modelo no end á asociado ningún Collide , que se á necesa io pa a la de ección de los golpes del jugado , asi que le asociamos uno con o ma de cápsula, seleccionando el obje o y seleccionando Add Componen →Physics →Capsule Collide . Median e el bo ón Edi Collide end emos que modi ica el amaño del Co- llide pa a que se ajus e ap oximadamen e al del modelo ( igu a 5.6). T as es os pasos podemos gua da el modelo añadido a la escena como p e ab, y asigna es e mismo p e ab al obje o egene ado de enemigos. Es e nue o modelo sus i ui á a los enemigos de la escena. 71 CAPÍTULO 5. MEJORA DEL ASPECTO GRÁFICO Y EFECTOS DE SONIDO Figu a 5.6: Ajus e de Collide al nue o modelo. Se segui á el mismo p ocedimien o pa a sus i ui los modelos del bas ón del jugado y de la o e del escena io, si bien en es e caso no ha á al a añadi collide s. En el caso del bas ón, nos asegu a emos que enga asignado su sc ip co espondien e, Mo imien oBas on.cs. 5.3.2. Impo ación de modelos de la Asse S o e Como al e na i a a c ea los modelos y ma e iales desde ce o, desde la Asse S o e de Uni y se pueden impo a odo ipo de componen es ealiza- dos po a is as y usua ios de la comunidad. Se puede accede a ella desde la p opia he amien a o desde un na egado web. Pa a nues a aplicación im- po a emos uno de los paque es de modelos g a ui os que es án disponibles pa a añadi una casa a la escena [23]. Después de encon a el ecu so que se quie a u iliza , bas a con pulsa el bo ón de Impo a pa a que se añadan los elemen os seleccionados ( igu a 5.7). 72 CAPÍTULO 5. MEJORA DEL ASPECTO GRÁFICO Y EFECTOS DE SONIDO p i a e loa ps = 0.0 ; p i a e bool mos a FPS = alse; [Se ializeField] p i a e GameObjec menu; [Se ializeField] p i a e GameObjec jugado ; [Se ializeField] p i a e GameObjec bas on; [Se ializeField] p i a e GameObjec cama a; [Se ializeField] p i a e GameObjec c edi os; p i a e bool sonidoAc i ado = ue; [...] oid S a () { [...] menu.Se Ac i e( alse); c edi os.Se Ac i e( alse); Cu so . isible = alse; } oid Upda e() { // ESC ab e el menu i (Inpu .Ge Key(KeyCode.Escape)) { ab i Menu(); } // calcula FPS i (mos a FPS) { iempoAcum += Time.del aTime; i ( iempoAcum > in e aloAc FPS) { ps = 1.0 / Time.del aTime; iempoAcum = 0.0 ; } con ado FPS. ex = "FPS: " + ps.ToS ing("F2"); } else { con ado FPS. ex = ""; } } public oid bo onSali () { 79 CAPÍTULO 5. MEJORA DEL ASPECTO GRÁFICO Y EFECTOS DE SONIDO Applica ion.Qui (); } public oid bo onFPS() { mos a FPS = !mos a FPS; } public oid ab i Menu() { Time. imeScale = 0.0 ; Cu so . isible = ue; jugado .Ge Componen <Mi a Al ededo >().enabled = alse; bas on.Ge Componen <Mo imien oBas on>().enabled = alse; cama a.Ge Componen <Mi a Al ededo >().enabled = alse; menu.Se Ac i e( ue); c edi os.Se Ac i e( alse); } public oid ce a Menu() { Time. imeScale = 1.0 ; Cu so . isible = alse; jugado .Ge Componen <Mi a Al ededo >().enabled = ue; bas on.Ge Componen <Mo imien oBas on>().enabled = ue; cama a.Ge Componen <Mi a Al ededo >().enabled = ue; menu.Se Ac i e( alse); } public oid mos a C edi os() { menu.Se Ac i e( alse); c edi os.Se Ac i e( ue); } public oid ce a C edi os() { c edi os.Se Ac i e( alse); menu.Se Ac i e( ue); } public oid bo onSonido() { sonidoAc i ado = !sonidoAc i ado; i (sonidoAc i ado) { AudioLis ene . olume = 1; } else { AudioLis ene . olume = 0; 80 CAPÍTULO 5. MEJORA DEL ASPECTO GRÁFICO Y EFECTOS DE SONIDO } } [...] } Como se puede obse a en el código, la mayo ía de es as unciones habili- an o deshabili an los componen es del menú que se quie en mos a en cada momen o. Dado que enemos odos los bo ones ag upados como obje os hijos de Menu, cambia la isibilidad de es e obje o hace lo mismo con el menú comple o. En cuan o a Upda e(), aquí se ha añadido la lógica que calcula la asa de ames po segundo. Pa a e i a que el indicado cambie demasiado ápido, se ac ualiza á cada medio segundo. Figu a 5.13: Selección de mé odo asociado a un bo ón. Como úl imo paso, end emos que asocia cada bo ón con el mé odo co- espondien e. Pa a ello, selecciona emos cualquie bo ón pa a accede al inspec o ( igu a 5.13). Aquí podemos modi ica pa áme os como el aspec o del bo ón o si se quie e u iliza una imagen en su luga , po ejemplo. En la pa e in e io , en la p opiedad OnClick(), enemos una casilla donde end e- mos que selecciona el obje o que enga asociado el sc ip Con olHUD.cs, que en es e caso es Con olado HUD. T as hace lo, pod emos selecciona en el desplegable de la de echa cualquie mé odo del sc ip , que se ejecu a á al pulsa del bo ón. El esul ado se mues a en la igu a 5.14. 81 CAPÍTULO 5. MEJORA DEL ASPECTO GRÁFICO Y EFECTOS DE SONIDO Figu a 5.14: Menú de opciones. 82 Capí ulo 6 E olución de la Realidad Vi ual y opciones disponibles en Uni y 6.1. De inición e his o ia La ealidad i ual consis e en un conjun o de ecnologías, gene almen e elacionadas con la compu ación, que simulan un en o no eal o imagina io a a és de un casco o iso que gene a imágenes, sonidos u o as sensacio- nes. El usua io de es as ecnologías es capaz de mi a al ededo en un en o no inme si o gene ado po o denado , y a menudo in e ac ua con sus elemen os. No hay un acue do ace ca del o igen exac o de la ealidad i ual, pe o los p ime os plan eamien os a ni el eó ico se emon an a la década de los años 50 [29]. En 1962, Mo on Heilig cons uyó un disposi i o mecánico al que llamó Senso ama, que podía ep oduci cinco películas de co a du ación y es imula los sen idos de la is a, el oído, el ol a o y el ac o ( igu a 6.1). Du an e esa misma época, Douglas Engelba u ilizó pan allas de compu- ado es como disposi i os de en ada y salida. En 1968, I an Su he land dise- ñó con ayuda de su alumno Bob Sp oull el p ime casco de ealidad i ual y ealidad aumen ada. E a bas an e p imi i o en cuan o a ealismo, ya que los g á icos gene ados es aban compues os únicamen e po igu as geomé icas en wi e ame, y e a an pesado que enía que es a suspendido del echo. Po es a azón, es e disposi i o ecibió el nomb e de La espada de Damocles. En las décadas de 1970 y 1980, des aca el Aspen Mo ie Map c eado po el 83 CAPÍTULO 6. EVOLUCIÓN DE LA REALIDAD VIRTUAL Y OPCIONES DISPONIBLES EN UNITY Figu a 6.1: Senso ama. Fuen e: wikipedia.o g. MIT (Ins i u o Tecnológico de Massachuse s), que ue una ec eación i ual en la que los usua ios podían eco e las calles de Aspen, Colo ado. Las dos p ime as ec eaciones es aban hechas con o og a ías, y la e ce a con g á i- cos gene ados po compu ado . La compañía A a i undó un labo a o io de in es igación de ealidad i ual en 1982, que u o que ce a as dos años de ac i idad debido a la c isis de la indus ia de los ideojuegos de 1983 [29]. Sin emba go, sus empleados con inua on con sus in es igaciones en ecnolo- gías elacionadas con la ealidad i ual. En el año 1991, se c eó la p ime a habi ación cúbica inme si a, conocida como The Ca e [30]. Consis ía en un en o no con múl iples imágenes p oyec- adas que pe mi ía que el usua io ie a su p opio cue po en elación al de o os den o de la habi ación. En ese mismo año, Sega anunció el Sega VR Headse pa a maquinas e- c ea i as [31] y su consola Mega D i e. Tenía pan allas LCD, sonido es é eo y senso es que de ec aban la posición de la cabeza del usua io. La compañía Vi uali y [32] lanzó el p ime sis ema VR mul ijugado , que incluía un cas- co y guan es pa a múl iples usua ios. El sis ema comple o enía un cos e de $73.0000. 84 CAPÍTULO 6. EVOLUCIÓN DE LA REALIDAD VIRTUAL Y OPCIONES DISPONIBLES EN UNITY En el año 1995 Nin endo lanzó su consola Vi ual Boy ( igu a 6.2), que si bien no se conside a una máquina de ealidad i ual, e a capaz de mos a 3D es e eoscópico median e un e ec o de pa alaje. Es e año ambién se lanzó el casco de ealidad i ual VFX-1 ( igu a 6.3), que uncionaba conec ado a un PC y e a compa ible con juegos como Descen ,Sys em Shock oQuake. Figu a 6.2: Consola Vi ual Boy. Fuen e: pix ans.com. Ya en la década de los 2000, en 2001 se diseña la p ime a habi ación inme si a que unciona con un PC, la SAS3 o SAS Cube. En 2010, Palme Luckey diseña el p ime p o o ipo de Oculus Ri , que como p incipal no- edad o ecía un campo de isón de 90o. En 2013, Val e hizo impo an es p og esos en la eliminación del e a do en la isualización de con enido en ealidad i ual, y en 2014 mos ó un p o o ipo de S eamSigh , un disposi i o con pan allas sepa adas pa a cada ojo de esolución 1K y len es de F esnel, que se ca ac e izan po ene una g an ape u a y co a dis ancia ocal. En 2014, Facebook comp ó Oculus VR y Sony anunció P ojec Mo p- heus, que más a de enomb a ía como PlayS a ion VR, un casco de ealidad i ual pa a la consola PlayS a ion 4. Es e año Google ambién anuncia Ca d- boa d, un iso que el p opio usua io puede cons ui se con una plan illa de ca ón, y que si e de sopo e a un elé ono mó il con el que se isualiza el con enido en VR. En 2015, HTC y Val e anuncian HTC Vi e, un conjun o de disposi i- os que incluyen un casco de ealidad i ual, con olado es, y senso es que pueden epa i se po una habi ación pa a egis a la posición del usua io 85 CAPÍTULO 6. EVOLUCIÓN DE LA REALIDAD VIRTUAL Y OPCIONES DISPONIBLES EN UNITY median e in a ojos. En 2016 se epa ie on las p ime as unidades de es e disposi i o pa a usa se con la pla a o ma S eam VR. Figu a 6.3: Casco VFX-1. Fuen e: wikipedia.o g. En la ac ualidad, hay una g an can idad de compañías desa ollando p o- duc os elacionados con la ealidad i ual, incluyendo g andes emp esas con depa amen os dedicados exclusi amen e a es e á ea, como Google, Apple, Amazon, Mic oso , Sony o Samsung. Hay cie os aspec os en los que se pue- den hace g andes a ances, como los con olado es háp icos, que no es án muy desa ollados oda ía, la esolución de la imagen o la asa de e es- co. La ealidad i ual hoy en día iene aplicación en muchos campos: en la indus ia del en e enimien o (cine y ideojuegos p incipalmen e), medicina ( a amien o de en e medades), en la educación y en enamien o pa a odo ipo de ac i idades, en ingenie ía y a qui ec u a, a e, ma ke ing, e c. 6.2. Pla a o mas ac uales de ealidad i ual y sopo e en Uni y Uni y pe mi e desa olla aplicaciones pa a las p incipales pla a o mas ac uales de ealidad i ual y ealidad aumen ada. A con inuación se desc i- bi án las ca ac e ís icas de es as pla a o mas. 6.2.1. Oculus Ri Oculus Ri ( igu a 6.4) [34] es un casco de ealidad i ual desa ollado po Oculus VR, una compañía independien e que undó es e p oyec o con 86 CAPÍTULO 6. EVOLUCIÓN DE LA REALIDAD VIRTUAL Y OPCIONES DISPONIBLES EN UNITY éxi o en 2012 a a és de la pla a o ma Kicks a e . La compañía ue com- p ada pos e io men e po Facebook en Ma zo de 2014. Figu a 6.4: Oculus Ri . Fuen e: wikipedia.o g An es de se lanzada al público, se dis ibuye on a ios p o o ipos como ki pa a desa ollado es pa a que hubiese aplicaciones lis as pa a el lanza- mien o. Desde en onces, pos e io es e isiones han mejo ado sus ca ac e ís- icas écnicas. El modelo ac ual, conocido como Consume Ve sion 1, iene las siguien es ca ac e ís icas: Pan alla OLED es e eoscópica con una esolución o al de 2160x1200 (1080x1200 po cada ojo). 90 Hz de asa de e esco. Campo de isión de 110o. Sepa ación en e len es ajus able. Au icula es de audio 3D in eg ados. Admi e el uso de con olado es ( igu a 6.5). El sis ema de posicionamien o de Oculus Ri ecibe el nomb e de Cons- ella ion y unciona median e un disposi i o de ec o de in a ojos que se conec a al casco median e una conexión USB. Es e disposi i o de ec a la luz que emi en unos LED de in a ojos in eg ados en el casco. Es e casco de ec a la posición y o ación de la cabeza median e 6 ejes. En cuan o a los con o- lado es, son dos disposi i os con bo ones y senso es pa a se as eados de la misma o ma que el casco. También se admi e el uso del con olado de 87 CAPÍTULO 6. EVOLUCIÓN DE LA REALIDAD VIRTUAL Y OPCIONES DISPONIBLES EN UNITY Xbox One, que iene incluido con cada unidad de Oculus Ri . El cos e del casco con los pe i é icos necesa ios es de 590 eu os ap oximadamen e, y el de los mandos (opcionales) es de 120 eu os. Figu a 6.5: Con olado es de Oculus Ri . Como equisi os pa a u iliza es a pla a o ma, la compañía ecomienda un PC con p ocesado In el Co e i3-6190 o AMD FX 4350, a je a g á ica N idia GeFo ce GTX 960 o equi alen e, 3 pue os USB y sis ema ope a i o Windows 8 o supe io . 6.2.2. Google Ca dboa d Google Ca dboa d es una pla a o ma desa ollada po Google y des ina- da a emplea como iso cualquie elé ono compa ible jun o con un sopo e de ca ón que incluye unas len es y un ga illo magné ico ( igu a 6.6). Su p incipal en aja es que es una o ma accesible y económica de ob ene un disposi i o de ealidad i ual, ya que cualquie pe sona puede ealiza el mon aje del iso a pa i de los ma e iales necesa ios. T as mon a el sopo e de ca ón con las len es, el elé ono se in odu- ce en la pa e pos e io . Las aplicaciones desa olladas pa a es a pla a o ma di iden la pan alla en dos y aplican un e ec o de dis o sión que, jun o con el e ec o de las len es, p oduce una imagen es e eoscópica con un campo de isión bas an e amplio. Exis en muchos modelos de iso disponibles, y cada uno de e mina los equisi os necesa ios del elé ono que se aya a u iliza , si bien en la mayo ía 88 CAPÍTULO 6. EVOLUCIÓN DE LA REALIDAD VIRTUAL Y OPCIONES DISPONIBLES EN UNITY 6.3. Sopo e en Uni y pa a pla a o mas de ealidad i ual Como se ha comen ado an e io men e, Uni y pe mi e desa olla apli- caciones de ealidad i ual pa a las p incipales pla a o mas ac uales. La compañía des aca la capacidad del mo o pa a consegui un ende izado op- imizado y al as asas de e esco, e sa ilidad en e las dis in as pla a o mas median e el uso de he amien as de desa ollo especí icas (SDKs) y una es- echa colabo ación con los ab ican es de los dis in os disposi i os. Has a hace poco Uni y daba sopo e a cada pla a o ma únicamen e me- dian e la impo ación de plugins o SDKs especí icos, pe o en u u as e siones el mo o a o ece á el uso del sopo e na i o inco po ado, que no equie e la impo ación de es os paque es y o ece uncionalidades básicas de ealidad i ual [40]. Es o se consigue habili ando la opción Vi ual Reali y Suppo ed en la con igu ación de Playe Se ings ( igu a 6.12) y a con inuación eligiendo la pla a o ma deseada en el menú desplegable. Es e mé odo se ía el mismo pa a cualquie pla a o ma con sopo e na i o disponible. Sin emba go, pa a el uso de cie as unciones, y dependiendo de la pla a o ma, oda ía puede se necesa ia la impo ación del SDK co espondien e, po ejemplo si se a a da sopo e a con olado es de Dayd eam o se quie en u iliza cie os p e abs incluidos en el ki de desa ollo [44]. En es e caso la opción Vi ual Reali y Suppo ed debe á es a desac i ada. Figu a 6.12: Opción Vi ual Reali y Suppo ed en Playe Se ings. En el siguien e capí ulo se desc ibi á cómo lle a a cabo una con e sión de la aplicación desa ollada a la ealidad i ual en la pla a o ma Ca d- boa d median e el SDK Google VR pa a Uni y, abo dando dos adap aciones 95 CAPÍTULO 6. EVOLUCIÓN DE LA REALIDAD VIRTUAL Y OPCIONES DISPONIBLES EN UNITY a disposi i os con mé odos de con ol dis in os. La impo ación del SDK se á necesa ia en es e caso, po que la e sión de Uni y u ilizada en es e p oyec o, la 5.5, oda ía no dispone de sopo e na i o que uncione co ec amen e pa a es a pla a o ma. El SDK de Google VR es á disponible pa a Uni y, And oid, iOS y Un eal Engine 4, y da sopo e an o pa a Ca dboa d como pa a Dayd eam en odas es as pla a o mas excep o en iOS, donde sólo se da sopo e a Ca dboa d [41]. Impo a es e ki de desa ollo nos pe mi i á usa los componen es ne- cesa ios pa a que la aplicación haga uso de ealidad i ual, como p e abs y sc ip s que incluyen uncionalidades de isión es e eoscópica, e en os, au- dio pa a en o nos inme si os, e c. El p oceso de impo ación y uso del SDK ambién se de alla á en el siguien e capí ulo. En u u as e siones de Uni y, si se u iliza a el sopo e na i o, los pasos a segui se ían los mismos o muy simila es, pe o ya no exis i ía la necesidad de impo a manualmen e ningún paque e adicional. 96 Capí ulo 7 Adap ación de la aplicación a disposi i os de Realidad Vi ual En es e capí ulo se abo da á el p oceso de adap ación a la ealidad i ual de la aplicación 3D desa ollada en capí ulos an e io es, usando el SDK de Google VR pa a Uni y y eniendo como obje i o que uncione an o en iso es Ca dboa d como en iso es con con olado . 7.1. Impo ación del SDK Google VR En p ime luga , se á necesa io ene ins alados en el sis ema el SDK de And oid y el JDK (Ja a De elopmen Ki ) de Ja a, pa a pode ealiza la compilación del ejecu able pa a And oid. Ambos pueden ob ene se ácilmen- e y de o ma g a ui a en sus espec i os si ios web [42] [43]. T as la ins alación de ambas he amien as de desa ollo, hay que es able- ce en Uni y la u a a las lib e ías de cada una. Es o se puede con igu a en el menú Edi →P e e ences →Ex e nal Tools, en los campos SDK yJDK espec i amen e ( igu a 7.1). El siguien e paso se á impo a los paque es eque idos del SDK de Goo- gle VR pa a Uni y según la pla a o ma. Es impo an e señala que es e paso es necesa io en la e sión de Uni y u ilizada en es e p oyec o ( e sión 5.5), pe o a pa i de la e sión 5.6, ac ualmen e disponible en p uebas, Google VR iene in eg ado de o ma na i a y no se ía necesa io ealiza la impo a- ción de los paque es. T as desca ga el SDK de su si io web [44], ol emos a Uni y y selec- 97 CAPÍTULO 7. ADAPTACIÓN DE LA APLICACIÓN A DISPOSITIVOS DE REALIDAD VIRTUAL Figu a 7.1: Con igu ación de SDK de And oid y JDK. cionamos Asse s →Impo New Asse s →Cus om Packages pa a indica la u a del SDK. Nos apa ece á una en ana desde la que podemos selec- ciona indi idualmen e los componen es que deseamos impo a al p oyec o ( igu a 7.2). Es os componen es apa ecen sepa ados po ca ego ías, y seleccio- na emos unas u o as según nues as necesidades. La ca ego ía Demos, po ejemplo, incluye demos aciones pa a p oba algunos componen es de RV, aunque pa a nues o p oyec o no se á necesa io impo a los. Legacy con ie- ne componen es de e siones an e io es del SDK pa a Ca dboa d que es án siendo sus i uidos, aunque oda ía se pueden u iliza en la e sión ac ual. Aunque no u iliza emos ninguno de es os componen es, no impo a los ha ocasionado algunos p oblemas al ejecu a la aplicación, po an o los inclui- emos. Al hace lo puede apa ece una pan alla ad i iendo de que se es án usando paque es obsole os, a pesa de ello con inua emos con el p oceso. La ca ego ía iOS end emos que inclui la si p e endemos dis ibui la aplicación en es a pla a o ma. T as e mina con la selección pulsamos el bo ón Impo . Cuando haya inalizado el p oceso de impo ación, en e los a chi os del p oyec o end emos un nue o di ec o io Google VR, que con end á odos los elemen os impo ados. 7.2. Adap ación al iso Ca dboa d A la ho a de adap a la aplicación a iso es de ipo Ca dboa d, hay que ene en cuen a que la capacidad que iene el jugado pa a in e ac ua con el 98 CAPÍTULO 7. ADAPTACIÓN DE LA APLICACIÓN A DISPOSITIVOS DE REALIDAD VIRTUAL Figu a 7.2: Selección de paque es del SDK Google VR. en o no se educe, ya que el iso sólo dispone de un ga illo con dos es ados posibles (pulsado o no). Po an o, además de do a al juego de isión es e- eoscópica con el SDK de Google VR, hab á que hace cambios en algunas de las mecánicas del juego pa a que sea ealmen e uncional. 7.2.1. Cambios en las mecánicas Al no ene disponibles bo ones de di ección que si podemos ap o echa en un eclado o en cualquie con olado , el p incipal cambio que se lle a á a cabo es que el mo imien o del jugado siga un eco ido p ede e minado po el escena io. El jugado pod á mi a hacia donde quie a con el mo imien o de la cabeza, que se á comple amen e independien e del mo imien o de des- plazamien o. Pues o que se pie de es a libe ad de mo imien o, ambién se pie de la capacidad de ace ca se a los enemigos pa a golpea les desde co a dis ancia. Po an o, la o ma de de o a a los enemigos se á dispa ando p oyec iles de la misma o ma que hacen ellos, usando el ga illo del iso Ca dboa d. Como al e na i a a es a solución, se ha conside ado la posibilidad de ha- ce que el jugado se mue a en odo momen o hacia donde es é mi ando. Es a opción iene como p incipal en aja que se conse a el desplazamien o lib e, aunque iene o os incon enien es. Uno de ellos es que equie e que el jugado que enga pues o el iso es é de pie y gi ando sob e si mismo con- 99 CAPÍTULO 7. ADAPTACIÓN DE LA APLICACIÓN A DISPOSITIVOS DE REALIDAD VIRTUAL inuamen e pa a cambia de di ección. Además el mo imien o no se pe cibe an na u al cuando se es á mi ando hacia a iba o hacia abajo, ya que en esos casos el desplazamien o sigue siendo ho izon al y no coincide con la di ección de la mi ada. Po es os mo i os inalmen e se ha op ado po implemen a un eco ido p ede e minado. Pa a lle a lo a cabo, pa i emos del p oyec o de Uni y donde lo dejamos, as la mejo a de los g á icos y la inco po ación de sonidos y o os e ec os. La implemen ación del eco ido que ealiza á el jugado se puede a on a de a ias mane as, en es a ocasión lo ha emos median e pun os de con ol. C ea emos es os pun os de con ol como obje os acíos (desde el menú, GameObjec →C ea e Emp y) a los cuales añadi emos un componen e Box- Collide (desde el inspec o del obje o, Add Componen →Physics →Box Collide ), como mues a la igu a 7.3. Figu a 7.3: Pun o de con ol con BoxCollide . Es os obje os se án in isibles pa a el jugado , ya que no ienen una o ma ni ex u a asignada, y los epa i emos po el escena io en pun os de e mi- nados pa a que es e e ec úe una o ación cuando en e en con ac o con ellos. Es o debe se así po que modi ica emos el mo imien o del p opio jugado pa a que se mue a de o ma con inua hacia adelan e, po an o se án los pun os de con ol los que indiquen al jugado cómo iene que gi a . En las p opiedades del BoxCollide , nos asegu a emos que la casilla IsT igge es é ac i ada pa a que podamos de ec a la colisión median e un sc ip . 100 CAPÍTULO 7. ADAPTACIÓN DE LA APLICACIÓN A DISPOSITIVOS DE REALIDAD VIRTUAL Llama emos a es e nue o sc ip Con olRo acion.cs y se lo asigna emos al pun o de con ol: Con olRo acion.cs using Sys em.Collec ions; using Sys em.Collec ions.Gene ic; using Uni yEngine; public class Con olRo acion : MonoBeha iou { public loa angulo; oid OnT igge En e (Collide o he ) { Mo imien oJugado jug = o he .Ge Componen <Mo imien oJugado >(); i (jug != null) { jug.Ro a (angulo); } } } Como se puede ap ecia en el código, se a a de un sc ip que decla a una a iable pa a almacena la o ación que end á que e ec ua el jugado , y que cuando de ec a la colisión con es e, llama al mé odo Ro a () pasando la o ación como a gumen o. La a iable de o ación es á decla ada como pú- blica pa a que se pueda modi ica con acilidad desde el en o no de Uni y, ya que cada ins ancia de un pun o de con ol end á almacenada una o ación dis in a. El mé odo Ro a () lo end á accesible el jugado en su sc ip Mo imien- oJugado .cs, el cual end emos que modi ica de la siguien e mane a: Mo imien oJugado .cs using Sys em.Collec ions; using Sys em.Collec ions.Gene ic; using Uni yEngine; public class Mo imien oJugado : MonoBeha iou { public loa el; 101 CAPÍTULO 7. ADAPTACIÓN DE LA APLICACIÓN A DISPOSITIVOS DE REALIDAD VIRTUAL oid Upda e () { ans o m.T ansla e(0, 0, el * Time.del aTime); } public oid Ro a ( loa angulo) { S a Co ou ine(Ro a Co u ina(angulo)); } p i a e IEnume a o Ro a Co u ina( loa angulo) { el = 0; i (angulo < 0) { o (in i = 0; i != angulo; i = i - 15) { ans o m.Ro a e(new Vec o 3(0, -15, 0)); yield e u n new Wai Fo Seconds(0.1 ); } } else i (angulo > 0) { o (in i = 0; i != angulo; i = i + 15) { ans o m.Ro a e(new Vec o 3(0, 15, 0)); yield e u n new Wai Fo Seconds(0.1 ); } } el = 8.0 ; } } El mé odo Upda e() se ha simpli icado espec o al juego o iginal a una sóla línea, en la que hacemos a anza al jugado hacia adelan e. En cuan o al mé odo Ro a () que llama á cada pun o de con ol, llama a su ez a una co u ina, que u iliza emos pa a implemen a la animación de gi o del jugado median e e a dos sin pausa el es o de la escena, de o ma simila a como se hizo con la animación de los enemigos al desapa ece . Es a pequeña animación iene como obje i o que el gi o no se ealice in- media amen e, po que de ocu i así pod ía deso ien a al jugado , sob e odo eniendo en cuen a los pun os de con ol son in isibles pa a él. En su luga , se de iene su mo imien o y se hace el gi o p og esi amen e en in e alos de 15ocada décima de segundo. De es a o ma pe cibi á mejo que es á o ando sob e si mismo. 102 CAPÍTULO 7. ADAPTACIÓN DE LA APLICACIÓN A DISPOSITIVOS DE REALIDAD VIRTUAL En cuan o al sc ip Mi a Al ededo .cs, que eníamos asociado al jugado y ambién a la cáma a, lo elimina emos de ambos, ya que el mo imien o de cabeza ya no se á con olado con el a ón , sino po el gi oscopio del dispo- si i o de ealidad i ual, como e emos más adelan e. Aho a que dependemos po comple o de los pun os de con ol pa a decidi el mo imien o, los epa i emos po la escena asignando a cada uno el alo de o ación adecuado pa a que el eco ido pase po las zonas más impo an es y uel a al comienzo, como mues a la is a aé ea de la escena en la igu a 7.4. Figu a 7.4: Reco ido de e minado po pun os de con ol. Po o a pa e, ambién ma ca emos la casilla isT igge del CapsuleCo- llide de los enemigos. De es a o ma pod emos segui de ec ando colisiones con ellos, pe o no desplaza án al jugado si llegan a choca con él. Con el e- co ido es ablecido el jugado da á uel as has a que se cumpla la condición de ic o ia o de de o a. Sin emba go, hab á que hace algunas modi icacio- nes más pa a que pueda dispa a p oyec iles. La implemen ación de los dispa os se ha á de la misma o ma que en el caso de los enemigos, ins anciando el p e ab de un p oyec il. Pa a ello modi- ica emos el mé odo Upda e() del sc ip Con olJugado .cs, y añadi emos el mé odo Ano a Pun o(): 103 CAPÍTULO 7. ADAPTACIÓN DE LA APLICACIÓN A DISPOSITIVOS DE REALIDAD VIRTUAL Con olJugado .cs [...] oid Upda e() { i (G Viewe .Ins ance.T igge ed) { Vec o 3 cen o = new Vec o 3(_cama a.pixelWid h / 2, _cama a.pixelHeigh / 2, 0); Ray ay = _cama a.Sc eenPoin ToRay(cen o); Raycas Hi hi ; i (Physics.Raycas ( ay, ou hi )) { _p oyec il = Ins an ia e(p oyec ilP e ab) as GameObjec ; _p oyec il. ans o m.posi ion = ans o m.T ans o mPoin (new Vec o 3(0, 1.5 , 0.5 )); _p oyec il. ans o m.LookA (hi .poin ); } } } public oid Ano a Pun o() { _pun os++; _sc ip Con olHUD.Ac ualiza Pun os(_pun os, _maxPun os); i (_pun os >= _maxPun os) { _sc ip Con olHUD.FinPa ida( ue); } } En Upda e(), se sigue una lógica muy simila a la de los dispa os enemigos, con algunas di e encias. En p ime luga , en cada i e ación comp obamos si el ga illo del iso de Ca dboa d ha sido p esionado, consul ando el booleano G Viewe .Ins ance.T igge ed. En caso a i ma i o, p oyec amos un aycas hacia el cen o de la cáma a, en ez de simplemen e hacia adelan e, como hacen los enemigos. Es e pun o se calcula di idiendo en e 2 las p opieda- des pixelWid h (ancho) y pixelHeigh (al o) del GameObjec de la cáma a, pa a ob ene las componen es X e Y espec i amen e. Si el aycas colisona con cualquie obje o, se ins ancia á el p e ab del p oyec il en e al jugado y se le asigna á la o ien ación necesa ia pa a que apun e hacia el pun o de colisión, lo cual se especi ica con ans o m.LookA (hi .poin ). De es a o ma conseguimos que el p oyec il siga la misma di ección que el aycas , jus o hacia donde el jugado es é mi ando. 104 CAPÍTULO 7. ADAPTACIÓN DE LA APLICACIÓN A DISPOSITIVOS DE REALIDAD VIRTUAL Figu a 7.10: Aplicación Ca dboa d en Play S o e. La aplicación Ca dboa d consis e básicamen e en un lanzado de odas las aplicaciones ins aladas en el disposi i o con sopo e pa a es a pla a o - ma ( igu a 7.11a), además de una sección que pe mi e descub i aplicaciones adicionales. No es necesa io usa el lanzado pa a ejecu a las aplicaciones ins aladas, sin emba go es especialmen e ú il pa a pode cambia en e dis- in os iso es. Es o se puede hace u ilizando la cáma a del disposi i o mó il pa a escanea el código QR que ienen imp eso los iso es de Ca dboa d. T as en oca el código, la aplicación Ca dboa d op imiza á la expe iencia pa a el iso que es é seleccionado ( igu a 7.11b). T as lanza la aplicación, ya podemos in oduci el elé ono en el iso y juga . Pa a ce a la, podemos pulsa el bo ón de la ueda que apa ece en la esquina supe io de echa pa a ol e al lanzado . Desde ahí, podemos ab i el panel de aplicaciones abie as con el bo ón cuad ado (es o puede a ia según la e sión del sis ema ope a i o) y a as a la pa a ce a la de ini i amen e. 7.3. Adap ación a iso con con olado A con inuación se mos a á como adap a la aplicación a un iso que disponga de un con olado p opio. En es e caso el p oceso de adap ación no eque i á hace an os cambios como en los iso es Ca dboa d, ya que al ene disponibles un joys ick y a ios bo ones, la jugabilidad o iginal se 111 CAPÍTULO 7. ADAPTACIÓN DE LA APLICACIÓN A DISPOSITIVOS DE REALIDAD VIRTUAL (a) (b) Figu a 7.11: Lanzado de Ca dboa d (a) y iso seleccionado (b). puede man ene in ac a. El jugado pod á mo e se de nue o lib emen e u i- lizando el joys ick, y al mismo iempo pod á mi a hacia donde quie a de o ma independien e. Pa a ello se ha op ado po u iliza un iso Pasonomi VR como el que mues a la igu a 7.12. Es e iso es compa ible con aplicaciones Ca dboa d, y se puede u iliza jun o con un con olado que se conec a al disposi i o mó- il median e Blue oo h. Viso es simila es a es e es án disponibles po unos 20 eu os ap oximadamen e. Sus p incipales en ajas espec o a los iso es de ca ón es que son más du ade os y suelen ene egulado es pa a ajus a la dis ancia ocal o la sepa ación en e las len es. Sin emba go, lo más in e e- san e conside ando las aplicaciones es que el uso del con olado nos da más libe ad de acción al dispone de a ios bo ones. Pa iendo de nue o del p oyec o de Uni y o iginal, en el que el jugado puede golpea a los enemigos con el bas ón, impo a emos los paque es del SDK de Google VR de la misma mane a que hicimos en la adap ación a los iso es Ca dboa d. 112 CAPÍTULO 7. ADAPTACIÓN DE LA APLICACIÓN A DISPOSITIVOS DE REALIDAD VIRTUAL Figu a 7.12: Viso Pasonomi VR. Una ez engamos los paque es impo ados, los únicos cambios que eali- za emos en el juego o iginal se ha án pa a con e i el mo imien o exis en e del jugado (basado en el eclado y el a ón) en un mo imien o con con o- lado usando una cáma a de ealidad i ual. Si eco damos la con igu ación del jugado y de la cáma a, es a es un obje o hijo del obje o jugado en la je a quía, po an o la cáma a sigue al jugado y ealiza sus mismos mo imien os. Po o a pa e, enemos un sc ip asociado a ambos obje os, Mi a Al ededo .cs, que con ola de o ma indepen- dien e su o ación con el a ón. Si mo emos el a ón en el eje ho izon al, el jugado (y po an o, ambién la cáma a) gi an de izquie da a de echa. Si mo emos el a ón en el eje e ical, sólo la cáma a se mue e de a iba a abajo. Si nos limi á amos a con e i la cáma a exis en e en una cáma a de ealidad i ual como se hizo con el iso Ca dboa d, el sc ip Mi a Al ede- do .cs no end ía ningún e ec o, ya que no de ec a ía el a ón, mien as que el mo imien o de cabeza únicamen e a ec a ía a la cáma a. El desplazamien- o median e el eclado se aslada ía al con olado , de o ma que el jugado pod ía mo e se, pe o la di ección de mo imien o no se e ía a ec ada po la di ección de la mi ada. Po es os mo i os, end emos que cambia la con igu ación inicial. En es a ocasión nos basa emos únicamen e en el mo imien o de cabeza que de ec a 113 CAPÍTULO 7. ADAPTACIÓN DE LA APLICACIÓN A DISPOSITIVOS DE REALIDAD VIRTUAL el gi oscopio del disposi i o y en los bo ones del con olado . La cáma a, con olada po el gi oscopio del disposi i o, se á la que de e mine la o ación del jugado , de o ma que los mo imien os de desplazamien o con el joys ick se án ela i os a la di ección en la que se es é mi ando. Es e es el mé odo de con ol más habi ual en los ideojuegos en p ime a pe sona. El p ime paso se á mo e la cáma a p incipal en la je a quía de obje os, pa a que ya no sea hija del obje o jugado . Siendo un obje o independien e, necesi a emos un nue o sc ip que haga que siga al jugado en odo momen o. Es e sc ip , Segui Jugado .cs, sus i ui á a Mi a Al ededo .cs. El código se mues a a con inuación: Segui Jugado .cs using Sys em.Collec ions; using Sys em.Collec ions.Gene ic; using Uni yEngine; public class Segui Jugado : MonoBeha iou { p i a e GameObjec _jugado ; oid S a () { _jugado = GameObjec .Find("Jugado "); } oid Upda e () { ans o m.posi ion = new Vec o 3(_jugado . ans o m.posi ion.x, _jugado . ans o m.posi ion.y + 0.5 , _jugado . ans o m.posi ion.z); } } De o ma simila a o os sc ip s is os an e io men e, buscamos el Ga- meObjec del jugado po nomb e con el mé odo Find(). En el mé odo Up- da e(), ac ualizamos la posición de la cáma a pa a que sea igual a la del jugado , con un pequeño desplazamien o en el eje Y pa a que es é a la al u a de lo que se ía la cabeza. En el obje o del jugado ambién elimina emos el sc ip Mi a Al ededo .cs y lo sus i ui emos po Ro a ConCama a.cs: 114 CAPÍTULO 7. ADAPTACIÓN DE LA APLICACIÓN A DISPOSITIVOS DE REALIDAD VIRTUAL Ro a ConCama a.cs using Sys em.Collec ions; using Sys em.Collec ions.Gene ic; using Uni yEngine; public class Ro a ConCama a : MonoBeha iou { p i a e GameObjec _cama aVR; oid S a () { _cama aVR = GameObjec .Find("Main Came a"); } oid Upda e () { loa _ o acionH = _cama aVR. ans o m.localEule Angles.y; ans o m.localEule Angles = new Vec o 3( ans o m.localEule Angles.x, _ o acionH, ans o m.localEule Angles.z); } Con es e sc ip ob enemos la o ación ho izon al de la cáma a p incipal y la aplicamos al jugado . Con es a nue a disposición de obje os y los nue os sc ip s, el gi oscopio del disposi i o o a la cáma a p incipal, y es a a su ez o a ho izon almen e al jugado . Los con oles de desplazamien o de inidos en Con olJugado .cs siguen siendo álidos, y aho a se aplica án al joys ick del con olado . En es e mismo sc ip hab á que hace algunos cambios: en el mé odo S a () se es á ob eniendo una e e encia a la cáma a p incipal median e Ge Componen InChild en(). Es e mé odo no ob end á la cáma a co ec amen e con la nue a con igu ación, pues o que la cáma a ya no es un GameObjec hijo del jugado . Po an o la ob end emos con el mé odo Find(): Con olJugado .cs [...] oid S a () { [...] _cama a = GameObjec .Find("Main Came a").Ge Componen <Came a>(); [...] } [...] 115 CAPÍTULO 7. ADAPTACIÓN DE LA APLICACIÓN A DISPOSITIVOS DE REALIDAD VIRTUAL Al e na i amen e, en ez de modi ica Con olJugado .cs, pod ía c ea se un nue o sc ip con es os cambios. De odas o mas, si man enemos un p o- yec o de Uni y pa a cada adap ación de la aplicación, cada p oyec o puede ene su p opia e sión del sc ip . Po o a pa e, sus i ui emos la de ección del bo ón izquie do del a ón po cualquie a de los dos bo ones de acción del con olado . Es os dos bo o- nes son accesibles median e los iden i icado es Fi e1 yJump espec i amen e. Po an o, sus i ui emos los mé odos Ge MouseBu onDown(0) yGe Mou- seBu onUp(0) po Ge Bu onDown() yGe Bu onUp() pa a cualquie a de es os dos iden i icado es, en el sc ip Con olJugado .cs: Con olJugado .cs oid Upda e() { // bo on con olado pulsado i (Inpu .Ge Bu onDown("Fi e1") || Inpu .Ge Bu onDown("Jump")) { [...] } Y ambién en Con olBas on.cs, donde seguimos u ilizando Qua e nion.Eule () pa a que se ealice la con e sión al sis ema de coo denadas que usa Uni y en el componen e T ans o m: Con olBas on.cs oid Upda e () { i (Inpu .Ge Bu onDown("Fi e1") || Inpu .Ge Bu onDown("Jump")) { // Golpe ans o m.localRo a ion = Qua e nion.Eule (35, 90, 35); } i (Inpu .Ge Bu onUp("Fi e1") || Inpu .Ge Bu onUp("Jump")) { // Posicion po de ec o ans o m.localRo a ion = Qua e nion.Eule (35, 90, 15); } } 116 CAPÍTULO 7. ADAPTACIÓN DE LA APLICACIÓN A DISPOSITIVOS DE REALIDAD VIRTUAL 7.3.1. HUD y menú de opciones pa a e sión en RV con con olado Po úl imo, end emos que hace los mismos cambios en el HUD que hicimos adap ando la aplicación a los iso es Ca dboa d, cambiando el modo de ende ización del can as a Wo ld Space y haciendo que sea hijo de la cáma a p incipal en la je a quía. La nue a disposición de los obje os después de odos los cambios se puede ap ecia en la igu a 7.13. Figu a 7.13: Disposición de los obje os de cáma a y jugado . En cuan o a la adap ación del menú de opciones, en es a e sión dispone- mos de bo ones que nos pe mi en ab i el menú con un bo ón del con olado . Así que, a di e encia de la e sión pa a Ca dboa d, es a ez pod emos in e- g a lo den o del HUD en modo es e eoscópico. Pa a ello añadi emos los bo ones al Can as exis en e en modo Wo ld Space. El menú se ab i á con su p opio bo ón, y a pa i de ese momen o el usua io pod á u iliza el joys ick pa a elegi en e las dis in as opciones. Es o se mues a en la igu a 7.14. 7.3.2. Compilación y despliegue Con es o la aplicación ya es á adap ada (y con la uncionalidad o iginal) a iso es con con olado , lo único que queda es compila la y ans e i la al disposi i o. De nue o, el p ocedimien o es el mismo que la compilación y dis ibución en iso es Ca dboa d: hay que cambia la pla a o ma de abajo a And oid (o iOS, según se equie a) y con igu a los pa áme os en Playe Se ings, como la e sión de sis ema ope a i o, nomb e e icono de la aplica- ción, e c. Cuando la aplicación es é ins alada en el disposi i o, end emos que en- cende y incula el con olado median e una conexión Blue oo h ( igu a 117 CAPÍTULO 7. ADAPTACIÓN DE LA APLICACIÓN A DISPOSITIVOS DE REALIDAD VIRTUAL Figu a 7.14: Menú de opciones en la e sión en RV con con olado . 7.15). Las igu as 7.16a y 7.16b mues an los bo ones y unciones disponibles en el con olado . Es e iene cua o modos de uncionamien o asociados a los bo ones A, B, C, y D, aunque el único que necesi a emos se á el modo C, pa a aplicaciones VR. Al encende lo, el mando es a á inicialmen e en un modo que emula el cu so de un a ón. Pa a cambia en e modos, enemos que pulsa el bo ón @ seguido de la unción deseada, po an o pulsa emos @ + C y el cu so desapa ece á. En ese momen o pod emos lanza la aplica- ción no malmen e, y comp oba emos que el joys ick mue e al jugado po el escena io y los bo ones pos e io es accionan el golpe con el bas ón o ab en el menú ( igu a 7.17). 118 CAPÍTULO 7. ADAPTACIÓN DE LA APLICACIÓN A DISPOSITIVOS DE REALIDAD VIRTUAL Figu a 7.15: Vinculación del con olado a un elé ono And oid. (a) (b) Figu a 7.16: Bo ones disponibles (a) y modos de uncionamien o (b). 119 CAPÍTULO 7. ADAPTACIÓN DE LA APLICACIÓN A DISPOSITIVOS DE REALIDAD VIRTUAL Figu a 7.17: Aplicación en ejecución. 120 Capí ulo 9 Conclusiones y abajos u u os En es e p oyec o se han explo ado las dis in as pla a o mas sopo adas po Uni y, incluyendo las opciones disponibles de ealidad i ual, a a és del desa ollo de a ias e siones de una aplicación in e ac i a en 3D. Se han implemen ado cua o e siones dis in as, pa a pode ap o echa las capacidades de dis in as pla a o mas: Una e sión como aplicación de esc i o io, pensada pa a maneja se con eclado y a ón, y que iene como pla a o mas obje i o los sis emas ope a i os Windows, MacOS, GNU/Linux y ambién la pla a o ma WebGL. Una e sión de ealidad i ual pa a se u ilizada con iso es Ca dboa d con ga illo, u ilizando elé onos mó iles con sis ema ope a i o And oid o iOS. Una e sión de ealidad i ual pa a Ca dboa d que se maneja con un con olado sepa ado conec ado al elé ono mó il, pa a And oid o iOS. Una e sión pa a disposi i os mó iles And oid o iOS ( elé onos o a- ble s p incipalmen e) que se con ola median e la pan alla ác il y el acele óme o del disposi i o. Se ha podido comp oba que Uni y o ece muchas opciones pa a gene a ejecu ables pa a múl iples disposi i os y que es una he amien a adecuada pa a ello, no sólo po la po abilidad de p oyec os en e pla a o mas, sino ambién po la lexibilidad pa a hace p uebas y p oba cambios ápidamen- e desde el edi o . 127 CAPÍTULO 9. CONCLUSIONES Y TRABAJOS FUTUROS Sin emba go, ambién se ha comp obado que hay que ealiza un es ue zo adicional a la ho a de con e i una aplicación a o os disposi i os, sob e odo p es ando especial a ención a aspec os como el mé odo de con ol en unción de los mé odos de en ada, licencias de desa ollo, esoluciones disponibles u o as ca ac e ís icas especí icas de cada pla a o ma. Es o se une a o as con- side aciones de diseño a la ho a de desa olla aplicaciones pa a la ealidad i ual. Es o puede hace que la adap ación no sea i ial. La aplicación se ha p obado en a ias pla a o mas: Pla a o mas Especi icaciones del disposi- i o Windows, Linux, WebGL Leno o In el Co e i7 4702MQ @2.2GHz, N idia GT740M, 8GB RAM MacOS Macbook Ai In el Co e i5 5250U @1.6GHz, In el HD G aphics 6000, 8GB RAM And oid LG Nexus 5X ARM 8 @1.8GHz, Ad eno 418, 2GB RAM Po o a pa e, la opción inco po ada en el menú de opciones que mues a la asa de ames po segundo (FPS) pe mi e hace una e aluación del endi- mien o de las dis in as e siones de la aplicación en a ias pla a o mas. En los disposi i os en los que se ha ejecu ado la aplicación, la asa de e esco se ha man enido es able en o no a los 60 FPS en odas las e siones, excep uando las e siones en RV, donde en algunos momen os bajaba momen áneamen e a 30 FPS. En las e siones de esc i o io exis e la en aja de pode elegi al- gunos pa áme os g á icos an es de lanza la aplicación, como la esolución. Es o puede a ec a al endimien o conside ablemen e. En cualquie caso, la expe iencia gene al ha sido luida con una esolución de 1920x1080 y calidad de los g á icos máxima, lo cual se a ibuye al ha dwa e u ilizado y al hecho de que los modelos 3D empleados no ienen una g an can idad de polígonos, así como al acabado g á ico gene al, que se diseñó de una o ma minimalis a pa a e i a p oblemas de endimien o pos e io es, especialmen e en disposi- i os mó iles. En cuan o a las posibles ampliaciones o mejo as, la aplicación desa olla- da consis e en un ni el que si e como una demos ación de una aplicación 128 CAPÍTULO 9. CONCLUSIONES Y TRABAJOS FUTUROS 3D, y se pod ía con inua añadiendo más ni eles, nue as mecánicas (como la ecogida de i ems o la inco po ación de o os obs áculos) una di icul ad que ue a aumen ando de o ma p og esi a o incluso un modo mul ijugado . En de ini i a, el ni el puede se una buena base pa a el desa ollo de un ideo- juego comple o de mayo du ación. Exis en o as posibilidades que se pod ían abo da en el campo de la ealidad i ual, como es inco po a a las aplicaciones la capacidad de cam- bia en e modo no mal y es e eoscópico en iempo de ejecución [49]. Pa a ello, y dependiendo de cada pla a o ma, pod ía se necesa io hace cambios adicionales en el modo de con ol del jugado . En el caso de la e sión pa a iso es Ca dboa d con ga illo, se pod ían explo a implemen aciones al e na i as a la u ilizada median e pun os de con ol, como hace que el jugado se desplaza a hacia donde es é mi ando, siguiendo en odo momen o la di ección de la cáma a. La ges ión del menú ambién pod ía cambia se, pa a que apa ecie a al man ene pulsado un bo ón du an e unos segundos, o pa a pode selecciona las opciones con la p opia mi ada. Po úl imo, espec o al p opio p oyec o, se conside a que se han cubie - o los p incipales obje i os p opues os, mos ando las capacidades de Uni y como he amien a de desa ollo, y explo ando su capacidad mul ipla a o ma median e la implemen ación de dis in as e siones adap adas a a ios dispo- si i os, con especial én asis en aquellos que hacen uso de ealidad i ual. 129 Bibliog a ía [1] Disponible en <h ps://uni y3d.com/es/public- ela ions> [Fecha de consul a: 12/06/2017] [2] Si io web de Un eal Engine Disponible en <h ps://www.un ealengine.com/wha -is-un eal-engine-4> [Fecha de consul a: 04/05/2017] [3] Si io web de C yEngine Disponible en <h ps://www.c yengine.com/> [Fecha de consul a: 04/05/2017] [4] Disponible en <h ps://uni y3d.com/es/uni y/mul ipla o m/> [Fecha de consul a: 02/05/2017] [5] Disponible en <h ps://en.wikipedia.o g/wiki/Uni y_(game_engine)> [Fecha de consul a: 27/12/2016] [6] Tu o iales y documen ación de Uni y Disponible en <h ps://uni y3d.com/es/lea n> [Fecha de consul a: 04/05/2017] [7] Uso de API Vulkan en Uni y Disponible en <h ps://blogs.uni y3d.com/es/2016/09/29/in oducing- he- ulkan- ende e -p e iew/> [Fecha de consul a: 05/05/2017] 130 BIBLIOGRAFÍA [8] Ge ing s a ed wi h WebGL de elopmen Disponible en <h ps://docs.uni y3d.com/Manual/webgl-ge ings a ed.h ml> [9] Ge ing s a ed wi h iOS de elopmen Disponible en <h ps://docs.uni y3d.com/Manual/iphone-Ge ingS a ed.h ml> [10] Disponible en <h ps://docs.uni y3d.com/es/cu en /Manual/and oid- Ge ingS a ed.h ml> [11] Licencia de Uni y incluída con ki de desa ollo de WiiU Disponible en <h ps:// en u ebea .com/2012/11/02/game- de elope s-s a -you -uni y-3d-engines-in e iew/> He amien as de desa ollo pa a consolas Nin endo <h ps://de elope .nin endo.com/ ools> [Fecha de consul a: 14/05/2017] [12] Disponible en <h ps://docs.uni y3d.com/Manual/ OS.h ml> [13] Hocking, Joseph. (2015). Uni y in Ac ion, Manning Publica ions Co., Shel e Island, NY [14] Disponible en <h p:// iz.ase .psu.edu/gho/sem_no es/3d_- undamen als/h ml/3d_coo dina es.h ml)> [Fecha de consul a: 05/01/2017] [15] Disponible en <h p://www.gamasu a.com/blogs/Sa aCasen/20160713/276970/Whi e_- Boxing_You _Game.php> [Fecha de consul a: 10/01/2017] [16] Disponible en <h ps://uni y3d.com/es/lea n/ u o ials/ opics/in e ace- essen ials/hie a chy-and-pa en -child- ela ionships> [Fecha de consul a: 04/01/2017] [17] Disponible en <h ps://docs.uni y3d.com/Sc ip Re e ence/MonoBeha iou .h ml> [Fecha de consul a: 04/02/2017] 131 BIBLIOGRAFÍA [18] Disponible en <h ps://docs.uni y3d.com/Sc ip Re e ence/Physics.Raycas .h ml> [Fecha de consul a: 05/03/2017] [19] Iconos ob enidos de <h p://game-icons.ne /> [Fecha de consul a: 22/03/2017] [20] Imágenes ob enidas de <h p://www.plain ex u es.com> [Fecha de consul a: 22/03/2017] [21] Imágenes ob enidas de <h ps://93i.de/p/ ee-skybox- ex u e-se /> Au o : Heiko I gang Licencia C ea i e Commons [Fecha de consul a: 09/04/2017] [22] <h ps://www.asse s o e.uni y3d.com/en/> [Fecha de consul a: 09/04/2017] [23] Paque e de ecu sos ob enido de <h p://u3d.as/wg > Pagina web del au o <h ps://ske ch ab.com/Bek> [Fecha de consul a: 11/04/2017] [24] Sonido ob enido de <h ps://www. eesound.o g> Au o : ’ ’ Licencia C ea i e Commons <h ps://c ea i ecommons.o g/licenses/by/3.0/> [Fecha de consul a: 11/04/2017] [25] Sonido ob enido de <h ps://www. eesound.o g> Au o : ’Tuudu ’ Licencia C ea i e Commons de dominio público <h ps://c ea i ecommons.o g/publicdomain/ze o/1.0/> [Fecha de consul a: 11/04/2017] [26] Sonido ob enido de <h ps://www. eesound.o g> Au o : ’Kas en osch’ Licencia C ea i e Commons de dominio público <h ps://c ea i ecommons.o g/publicdomain/ze o/1.0/> [Fecha de consul a: 11/04/2017] 132 BIBLIOGRAFÍA [27] Sonido ob enido de <h ps://www. eesound.o g> Au o : ’T ipe ’ Licencia C ea i e Commons de dominio público <h ps://c ea i ecommons.o g/publicdomain/ze o/1.0/> [Fecha de consul a: 11/04/2017] [28] Sonido ob enido de <h ps://www. eesound.o g> Au o : ’ ollko nb o ’ Licencia C ea i e Commons <h ps://c ea i ecommons.o g/licenses/by-nc/3.0/> [29] His o ia de la ealidad i ual Disponible en <h ps://en.wikipedia.o g/wiki/Vi ual_ eali y> [Fecha de consul a: 06/05/2017] [30] The Ca e: audio isual expe ience au oma ic i ual en i onmen Disponible en <h p://dl.acm.o g/ci a ion.c m?doid=129888.129892> [Fecha de consul a: 12/06/2017] [31] Sega VR Disponible en <h p://sega e o.o g/Sega_VR> [Fecha de consul a: 12/06/2017] [32] Máquinas Vi uali y Disponible en <h ps://en.wikipedia.o g/wiki/Vi uali y_(gaming)> [Fecha de consul a: 12/06/2017] [33] <h p://www.and oidau ho i y.com/dayd eam- - eady-phones- specs-727780/> [Fecha de consul a: 16/04/2017] [34] Si io web de Oculus Ri disponible en <h ps://www.oculus.com/> [Fecha de consul a: 06/05/2017] [35] Disponible en <h ps://www. i e.com/us/ eady/> [Fecha de consul a: 07/05/2017] 133 BIBLIOGRAFÍA [36] Disponible en <h ps://en.wikipedia.o g/wiki/HTC_Vi e> [Fecha de consul a: 07/05/2017] [37] Disponible en <h ps://en.wikipedia.o g/wiki/PlayS a ion_VR> [Fecha de consul a: 07/05/2017] [38] Especi icaciones écnicas de Samsung Gea VR Disponible en <h p://www.samsung.com/global/galaxy/gea - /specs/> [Fecha de consul a: 09/05/2017] [39] Especi icaciones écnicas de Mic oso Hololens Disponible en <h ps://de elope .mic oso .com/en- us/windows/mixed- eali y/hololens_ha dwa e_de ails> [Fecha de consul a: 09/05/2017] [40] Ace ca del sopo e na i o pa a ealidad i ual Disponible en <h ps://docs.uni y3d.com/Manual/VRO e iew.h ml> [41] SDK Google VR pa a Uni y <h ps://de elope s.google.com/ /> [Fecha de consul a: 16/04/2017] [42] Disponible en <h ps://de elope .and oid.com/s udio/index.h ml?hl=es-419> [Fecha de consul a: 17/04/2017] [43] Disponible en <h p://www.o acle.com/ echne wo k/ja a/ja ase/downloads/jdk8- downloads-2133151.h ml> [44] Disponible en <h ps://de elope s.google.com/ /uni y/download> [Fecha de consul a: 17/04/2017] [45] Disponible en <h ps://de elope s.google.com/ /uni y/guide> [Fecha de consul a: 17/04/2017] [46] Disponible en <h ps://de elope s.google.com/ /uni y/ge -s a ed> [Fecha de consul a: 18/04/2017] 134 BIBLIOGRAFÍA [47] Compilación pa a iOS desde Windows u ilizando XCode Disponible en <h ps://uni y3d.com/es/lea n/ u o ials/ opics/mobile- ouch/building-you -uni y-game-ios-de ice- es ing> [Fecha de consul a: 16/05/2017] [48] Uso de Google Ca dboa d sin gi oscopio Disponible en <h p://buckyd oid.com/ -wi hou -gy oscope/> [Fecha de consul a: 22/05/2017] [49] Ac i ación de modo VR median e VR.Se ings Disponible en <h ps://docs.uni y3d.com/Sc ip Re e ence/VR.VRSe ings- enabled.h ml> [Fecha de consul a: 15/05/2017] 135