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
Para el juego creamos un nuevo proyecto 3d, repetimos los pasos de los juegos anteriores creando 4 escenas (Ninja Star, Intro, GameOver, Win).
A la esfera la llamaremos Emitter y su función es moverse en senoidal y disparar bombas o frutas.
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
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.
La cámara debe mantenerse con sus valores originales, Field of View = 60
Para simular que tenemos bombas y frutas creamos una carpeta My materials y dos materiales con colores Negro y Rojo.
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.
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
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.
Ajuste el Canvas con Scale With Screen Size y los tamaños de cada UI Text.
Puede cambiar los colores de los UI Text...
Preparando el GameBrain para las puntuaciones del juego:
Creamos el Script GameBrain.Cs
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.
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...
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.
No olvide agregar un AudioSource a Emitter y quitar su colisionador.
Importante: Desactive el colisionador del Emitter o las instancias van a colisionarlo.
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.
Script: RaycastPlayer.Cs
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.
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.
Sólo falta crear sus escenas de Intro, GameOver y Win, repita los pasos anteriores.