Mostrando entradas con la etiqueta Programación con Unity. Mostrar todas las entradas
Mostrando entradas con la etiqueta Programación con Unity. Mostrar todas las entradas

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;
}
}
}




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