Índice del curso de Unity 3D

  1. Introducción
  2. Instalación
  3. Interfaz
  4. Conceptos básicos
  5. Ejercicio: cubos
  6. Cambiar el color de algo
  7. Introducción a C#
  8. Conceptos para realización de juegos 2D
  9. Acceder a componentes desde código
  10. Uso del transform
  11. User Interface
  12. Elije tu propia aventura
  13. Acierta imagen
  14. Fall Down Game
  15. Galería de tiro
  16. Flappy Bird
  17. PONG
  18. Carreras
  19. Panel Animator
  20. Plataformas
  21. Plataformas
  22. Puzzle
  23. Plataformas con RayCast
  24. Memory (juego de las parejas)
  25. Máscara
  26. Publicación
  27. Ejercicio: First Person Shooter

Flappy Bird

flappy bird

Ponemos la imagen de fondo

imagen fondo flappy bird con unity

Ponemos el heroe en pantalla

Debe caer por gravedad y tener una animación.

Cuando pulsamos la tecla espacio, el pájaro sube para arriba

Rigidbody2D heroeRB;
private int potenciaSalto = 3;
void Start(){
	heroeRB = GameObject.Find("heroe").GetComponent<Rigidbody2D>();
}

void Update(){
	if (Input.GetKeyDown(KeyCode.Space)){
		heroeRB.velocity = Vector2.zero; //Si pulsamos el botón de saltar justo cuando estamos cayendo, podría ser que se restasen las velocidad 
		heroeRB.AddForce(Vector2.up * potenciaSalto, ForceMode2D.Impulse);
	}
}

Una tubería se mueve horizontalmente

flappy bird con unity

Creamos un prefab (varios objetos que arrastramos simultaneamente al panel de proyecto) con dos tuberías enfrentadas cuyo origen estará en el punto 0.

public class Tuberia : MonoBehaviour{
    void Update(){
        this.transform.Translate(-2 * Time.deltaTime, 0, 0);
    }
}

Crear varias tuberías

Hacemos una corrutina para ir insertando las tuberías. Las corrutinas se lanzan con StartCoroutine.

public class GameController : MonoBehaviour{
    public GameObject tuberiaPrefab;
    void Start(){
        StartCoroutine(generarTuberias());
    }

    IEnumerator generarTuberias(){
        while (true){
            GameObject tuberiaNueva = Instantiate(tuberiaPrefab, new Vector2(10, 0), Quaternion.identity);
            tuberiaNueva.name = "tuberia";
            yield return new WaitForSeconds(3.0f);
        }
    }
}

Tuberías en posiciones aleatorias

int posicionY = Random.Range(-3,3);
GameObject tuberiaNueva = Instantiate(tuberiaPrefab, new Vector2(10, posicionY), Quaternion.identity);

Perder al colisionar contra una tubería

  1. Crearemos un objeto empty dentro de la tubería.
  2. Asociamos un BoxCollider2D al empty.
  3. Entre las propiedades del componente BoxCollider2D, le damos a Edit Collider, para ajustar el area de colisión del empty al del grupo de tuberías superior.
  4. Repetimos para el grupo de tuberías inferior.
  5. Asociamos al heroe un BoxCollider2D con Body Type Dynamic y la check isTrigger marcada.
  6. Asociamos el código necesario al heroe para detectar la colisión y cambiar de escena.
colisiones con tuberías en unity

Perder al salir por los límites de la pantalla

Simplemente añadimos dos cubos con su correspondiente BoxCollider2D a la parte superior e inferior de la pantalla.

Destruir tuberías

prefabTuberíaif (transform.position.x < -10) {
	Destroy (this.gameObject);
}
icono de mandar un mail¡Contacta conmigo!
Pablo Monteserín
contacta conmigoPablo Monteserín

Para dudas técnicas sobre los ejercicios de mis cursos es necesario estar suscrito.