40.- Juego - NinjaStar



Ninja Star está inspirado en Fruit Ninja, la diferencia es que los objetos se eliminan con un Click y solo tenemos una fruta, para ganar debe acertar a 10 frutas sin dejar caer más de 3, aparte evitar disparar a las bombas

NinjaStar-Sample



Para el juego creamos un nuevo proyecto 3d, repetimos los pasos de los juegos anteriores creando 4 escenas (Ninja Star, Intro, GameOver, Win).

31.- Estructura básica de escenas

A la esfera la llamaremos Emitter y su función es moverse en senoidal y disparar bombas o frutas.

Create-Spheres



Creamos nuestra escena con un Cubo (Platform) con las escalas y coordenadas mostradas.
Posición 0,-9,0
Escala 30,1,30

Creamos una esfera que llamaremos emitter con la posición 0,-3, 0 y escala 1,1,1

Elimine el colisionador

Cube-Platform



La Main Camera debe tener proyección de perspectiva y posición: 0,1,-5.5

Observe que con ésta coordenada la cámara está frente al emisor pero no lo ve, el objetivo es no saber por donde sale la fruta o bomba.

Camera-Proyection



La cámara debe mantenerse con sus valores originales, Field of View = 60

Camera-Proyection



Para simular que tenemos bombas y frutas creamos una carpeta My materials y dos materiales con colores Negro y Rojo.

Bomb-And-Fruit-Tags



Para crear nuestra bomba creamos una esfera sobre la plataforma, agregamos un Rigidbody con masa de 1 kg, escala 1,1,1.

Arrastre el material negro para simular la bomba, y renómbrela como Bomb.

Para crear el prefab arrastre Bomb a su carpeta My prefabs (si no la tiene debe crearla)

Repetimos el mismo paso para la fruta, ahora con el color rojo, mismo peso y escala, con su prefab Fruit.

Falta algo, identificar la bomba y la fruta creamos 2 Tags:

Bomb

Fruit

Desde la carpeta My prefabs puede seleccionar Bomb y asignar su tag Bomb, lógicamente el tag Fruit para la Fruit.

Creating-Prefabs-Bomb-And-Fruit



El objeto Platform tiene dos funciones, destruir todo lo que cae y contar la cantidad de frutas que se escaparon, al colisionar con una fruta manda un mensaje al GameBrain, creamos el Script PlatformCollisions.Cs

PlattformCollision-Script



Ocupamos un GameBrain para concentrar los datos, recibir los mensajes e imprimir los puntos del juego.

Debe crear 2 UI Text, GoodPointsText y BadPointsText...

Si no puede ver los UI Text debe seleccionar 2D en escena.

PlattformCollision-Script-Asigned



Ajuste el Canvas con Scale With Screen Size y los tamaños de cada UI Text.

2D-Perspective



Puede cambiar los colores de los UI Text...

2D-UI-Text



Preparando el GameBrain para las puntuaciones del juego:

Creamos el Script GameBrain.Cs

GameBrain-Script-UIText-Asigned



El GameBrain tiene la función de contar las frutas buenas y malas, invocar las escenas GameOver-Win y controlar los dos UI Text para la puntuación.

Las funciones son llamadas por el Raycast de la cámara y la plataforma de colisiones.

GameBrain-Script



El objeto Emitter se debe mover para no lanzar las bombas y frutas en el mismo lugar, creamos el Script SineMovementX.Cs para un movimiento senoidal...

SineMovementX-Script



Creamos el Script PrefabGenerator.Cs

Para generar las bombas y frutas de nuevo nos apoyaremos con el comando Random, dependiendo el valor que nos mande la maquina se creara la instancia de la bomba o fruta, aparte se emite un sonido.

PrefabGenerator-Script



No olvide agregar un AudioSource a Emitter y quitar su colisionador.

Importante: Desactive el colisionador del Emitter o las instancias van a colisionarlo.

Desactive-Sphere-Collider



Configure las variables de SineMovementX con: CycleWidth: 5 y Frequency: 2.

El “Mágico” rayo láser de la cámara nos devolverá el Tag del objeto colisionado, también emite un sonido y genera una explosión de un Prefab.

Configure-SineMovementX-And-PrefabGenerator



Script: RaycastPlayer.Cs

RayCastPlayer-Script



En general el juego funciona de ésta manera:

GameBrain concentra los datos, recibe un mensaje de la cámara cuando el rayo colisiona con algo que tiene el tag Bomb y Fruit, si es Bomb, invoca al GameOver, si es Fruit invoca la función de los puntos buenos.

Platform simplemente manda un mensaje si detecta frutas, y elimina todo lo que cae para ahorrar memoria.

Main Camera dispara el Raycast e informa a GameBrain.

Emitter se mueve en senoidal y genera bombas y frutas aleatorias.

Camera-RayCast



Preparando la cámara para el RayCast:

Rrecuerde, la cámara debe tener la coordenada (0,1,- 5.5), a esa distancia debe ver el área donde los objetos van a salir desde abajo, configure su Script para un Prefab de explosión, un sonido de disparo y el redireccionamiento al GameBrain.

RayCastPlayer-Configuration



Sólo falta crear sus escenas de Intro, GameOver y Win, repita los pasos anteriores.

31.- Estructura básica de escenas

¡A jugar!

NinjaStar-OnPlay