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