Programación con Unity

Realización de este juego al estilo Space Invaders. Para PC hecho con Javascript. Montaje de 4 escenas con audio (el menú principal, el juego, victoria y derrota) y los scripts que he utilizado:

- BotonMenu (para el cambio de escena cuando pulso play).

- BotonSalida (para el cambio de escena cuando pulso exit).

- CuentaEnemigos (para el control del número de enemigos destruidos).

- Disparo (input de usuario para que el jugador dispare).

- DisparoEnemigos (disparo aleatorio de los enemigos).

- GameOver (para el control de Game Over por enemigos en el límite).

- MovimientosEnemigos (para el desplazamiento en zig-zag de los enemigos).

- MovimientoDisparoEnemigos (para el movimiento e impacto de los proyectiles enemigos).

- Nave (input de usuario para mover al jugador).

- Rocas (velocidad en la que rotan los obstáculos).

- Proyectil (movimiento e impacto del proyectil del jugador).

- Puntos (para llevar el control de la puntuación).

- Vidas (numero de las vidas que tiene el jugador).


Aquí dejo el GamePlay y un ejecutable para que lo juguéis vosotros mismos!



Para obtener el ejecutable del juego:

1) Copia este enlace en tu navegador:
    https://mega.nz/#!sk8QRCLA             

2) Introduce esta contraseña:
    !aGrHdQ1XbL_5Z48iFS9myv1jkQ5fKrqgwtPOSTI-Ewg



- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -


Uso de terrenos. Modelos del Asset Store, pinceles, luces, texturas, sistemas de partículas y demás materiales para crear esta gran escena y así poder ser un juego de exploración libre.













- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -


The Dreamcatcher. Realización de este juego de explotar burbujas para PC y Android. Hecho con C#.
La estética está basada en el juego de cartas Magic: The Gathering. Uso de Photoshop y 3ds Max 2016 para los objetos de escena. Sistemas de partículas de diferentes colores, InputTouch y GameManager.






Aquí dejo un vídeo del GamePlay, un ejecutable para que puedas tener el juego en tu propio móvil y un enlace directo para jugarlo desde la web! :P



Para obtener el ejecutable del juego:

1) Copia este enlace en tu navegador:
    https://mega.nz/#!B0VjCbaD

2) Introduce esta contraseña:
    !crnTh9cKZaq6ryfXAwm1kxB_s1fW1NXyxSWKxvX4CUM
    
3) Cuando ya lo tengas descargado, tienes que copiar el archivo ".apk" en tu móvil. Por ejemplo, puedes ponerlo en la carpeta de descargas o en la que más cómoda te sea de encontrar luego.

4) Instálalo y a jugar!


Para jugarlo desde la web, primero será necesario que tengas el navegador Firefox, Ópera o Internet Explorer. 

Después, sólo tendrás que hacer doble click en el archivo "Web.html" y listo!


- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -


A partir de este script, conseguimos que la esfera salte las plataformas.

using UnityEngine;
using System.Collections;

public class saltarplataforma : MonoBehaviour { //se pone tags a las plataformas y la esfera tiene rigidbody, con su fuerza va subiendolas


void OnCollisionEnter(Collision objetoChocado){

Rigidbody rigidbodyEsfera = GetComponent<Rigidbody> ();
rigidbodyEsfera.velocity = Vector3.zero;

if (objetoChocado.gameObject.tag == "Avanzar" ) {

rigidbodyEsfera.AddForce (3, 15, 0, ForceMode.Impulse);
}
if (objetoChocado.gameObject.tag == "Giro") {

rigidbodyEsfera.AddForce (0, 15, 3, ForceMode.Impulse);

}
}
}




- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -


Realización de esta simple escena con la finalidad de que el cubo lanzado caiga encima de la Spotlight.




- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -


A partir de este script, conseguimos que el cubo destruya la pared cuando choque con ella.

using UnityEngine;
using System.Collections;

public class movercubo : MonoBehaviour {

void Update() {
transform.Translate(0,0,10*Time.deltaTime);

}

void OnCollisionEnter(Collision pared){

Destroy (pared.gameObject);
Destroy (gameObject);
}
}




- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -


Acelerómetros. Uso de Unity Remote 4 conectado a través del móvil o tablet. Pruébalo.



- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -


Puerta automática. Diseño de la escena con materiales y luces. Uso del controller y doorswitch con C#.




Script del controller:

using UnityEngine;
using System.Collections;

[RequireComponent (typeof (Animator) ) ]
[RequireComponent (typeof (Collider) ) ]
public class Controller: MonoBehaviour
{
// Posibles estados de la puerta
private const int CERRADA   = 1;
private const int BLOQUEADA = 2;
private const int ABIERTA   = 3;
private Animator p_animator;
private int  p_estado;
private int  p_numPersonasDentro;
private bool p_cerrojoActivo;
// Este metodo se llama desde el cerrojo cuando es activado
public void CambiaCerrojo ()
{
p_cerrojoActivo = !p_cerrojoActivo;
}
void Start ()
{
p_animator = this.GetComponent<Animator>();
p_estado = CERRADA;
p_cerrojoActivo = false;
p_numPersonasDentro = 0;
}
void Update ()
{
switch (p_estado)
{
case CERRADA:
ProcesaEstadoCerrada();
break;
case BLOQUEADA:
ProcesaEstadoBloqueada();
break;
case ABIERTA:
ProcesaEstadoAbierta();
break;
}
}
void OnTriggerEnter (Collider i_other)
{
// Por la matriz de colision sabemos que quien ha entrado esta
// en la capa Player o Enemigo
p_numPersonasDentro++;
}
void OnTriggerExit ( Collider i_other)
{
// Por la matriz de colision sabemos que quien ha salido esta
// en la capa Player o Enemigo
p_numPersonasDentro--;
}
void ProcesaEstadoCerrada ()
{
p_animator.ResetTrigger("AbrePuerta");
p_animator.SetTrigger("CierraPuerta");
if (p_cerrojoActivo == true)
{
p_estado = BLOQUEADA;
}
else
{
if(p_numPersonasDentro > 0)
{
p_estado = ABIERTA;
}
}
void ProcesaEstadoBloqueada ()
{
p_animator.ResetTrigger("AbrePuerta");
p_animator.SetTrigger("CierraPuerta");
if (p_cerrojoActivo == false)
{
p_estado = CERRADA;
}
}
void ProcesaEstadoAbierta ()
{
p_animator.ResetTrigger("CierraPuerta");
p_animator.SetTrigger("AbrePuerta");
if (p_cerrojoActivo == true)
{
p_estado = BLOQUEADA;
}
else
{
if(p_numPersonasDentro < 1)
{
p_estado = CERRADA;
}
}
}




- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -





























No hay comentarios:

Publicar un comentario