33.- Terminando juego "Jumper 2D"

Escena y Scripts del juego. La escena Jumper aun esta vacia, a trabajar en nuestro juego:

Necesitaremos crear los siguientes Scripts...

Jumper-Assets-Scripts-List



CaveMovement.Cs

Para mover las cuevas.

Simplemente mueve a la izquierda las cuevas.

CaveMovement-Script



BackgroundMovement.cs

Para mover el fondo.

Observe que el translate es más lento.

BackgroundMovement-Script

SineMovementY.Cs

Para mover el Enemigo.

¿Recuerda la función Seno?
Durante la secundaria es común preguntarnos… ¿Para qué nos sirve tanta matemática?

Bueno…llegó el momento esperado, la función senoidal es ampliamente utilizada en videojuegos desde los 70s, su forma continua y periódica nos ayuda a mover objetos de forma de “S” al natural, con este Script se mueve el enemigo en el eje Y, lo puede configurar con las variables cycleWidth y frequency.

Observe como el counter se re inicia al llegar a 6.28 (2pi), precisamente cuando una senoidal reanuda el ciclo.

SineMovementY-Script

PlayerMovement.Cs

Para controlar el Player.

Es un script muy sencillo, prácticamente tiene todo el juego:

Con el código damos un impulso al Rigidbody del Player cuando se presiona la barra space, su salto tiene la fuerza hacia arriba de jumpForce y emite el sonido JumpSound.

Nota:Vector2.zero suspende la fuerza de bajada antes de brincar para hacerlo ligero.

La función OnCollisionEnter2D permite ganar si colisionamos con FinalGoal o perder si tocamos cualquier otra cosa.

Player-Movement

Continuamos con la escena Jumper, el juego es corto, solo dura el tiempo que toma recorrer las 3 cuevas.

Para organizar los obstáculos un GameObject vacío y lo nombramos Obstacles.

Agregamos a escena los Sprites como se muestra, Cave 1, Cave2, Cave3 y finalGoal deben quedar como hijos de Obstacles, todos se van a mover contra el Player.
La pantalla Game debe tener la proporción 16:9.

DatoCurioso-1

Todos los Sprites se deben acomodar en línea, solo una parte de la primera cueva será visible a la cámara del juego, el Script CaveMovement.Cs se encargara de mover el padre Obstacles con todos sus hijos.

Use las herramientas para acomodar los Sprites.

Screen-16-9

A cada cueva asignamos un PolygonCollider 2D, no es necesario Riggidbody 2D, solo ocupamos paredes fijas.

Para la meta “FinalGoal” Asignamos un BoxCollider2D.

Unity-Move-Tools

Manejo de Layers 2D:

Los layers (capas) nos permiten organizar el orden de los Sprites en el mundo 2D, el valor por defecto es 0, si ocupamos un Sprite atrás le asignamos el valor -1, para capas arriba, los valores son ascendentes 1,2…5, según las capas de profundidad del juego.

PoligonCollider-And-BoxCollider



Para asignar los Layers seleccionamos el Sprite Player y asignamos el valor 2, a las 3 cuevas el valor 1 y al Background el 0.

Manejo-De-Layers-2D



En nuestro contenedor Obstacles asignamos el Script CaveMovement.Cs

El Script se asigna a Obstacles por ser el padre de todas las cuevas y la meta, en este juego el Player no se mueve, solo salta.

Player-Sprite-Layer



Preparando el Player:

Seleccionar el Player y agregar un Rigidbody 2D y un Box Collider 2D, adapte los límites del colisionador para adaptarlos a una forma parecida al Sprite.

Para evitar que el personaje gire en el eje Z debe congelar la rotación desde opción Constraints del Rigidbody 2D.

Aparte de los componentes de física agreamos el Script PlayerMovement.Cs y un componente AudioSource para reproducir el sonido Script.

Obstacles-CaveMonsterScript



Para Players u objetos que se mueven no son recomendables Polygon Colliders, se pueden dar errores al colisionar, debe usar Box o Circle Collider.

Preparando-El-Player



Finalmente agregamos nuestro enemigo como hijo de Obstacles.

Usted puede configurar la velocidad y el ancho de ciclo desde su editor con las variales Cyclewidth=5 y Frequency=2.

Info-Player



Le asignamos un colisionador Box o Circle Collider 2D y su Script de movimiento SineMovementY, NO es necesario un Rigidbody 2D, el enemigo se mueve por código.

Jumper-Build-Settings



Antes de ejecutar no olvide agregar sus 4 escenas al Build Settings.

Enemy-CycleWildth-And-Frequency



Hasta ahora ya se pueden cargar las escenas GameOver y Win, pero solo tienen un fondo de color, puede agregar un sprite con un logo a cada una para adornar.

Una escena de GameOver sin canción de “melancolía” no tiene impacto…

Para reproducir una canción al cargar la escena ocupa importar un MP3 y agregar un AudioSource a la Main Cmaera...

Jumper-GameOver-Scene



Repetimos el mismo paso para la escena Win…

Agregar un Sprite “Winner”, importar un MP3 con canción de festejo y un AudioSource a la cámara con el archivo asignado.

Jumper-Winner-Scene



Finalmente a ¡¡ A jugar!!
El objetivo es llegar a la meta evadiendo las cuevas y el enemigo.

De ahora en adelante el diseño de los juegos será algo repetitivo, crear 4 escenas, carpetas para organizar el proyecto y reutilizar scripts.


Siguiente: 34.- Manejo de prefabs e instancias en Unity
Tutoriales Tecno Trainer Unity-C#-3dsmax

Jumper-OnPlay