Í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. Sprites
  15. Fall Down Game
  16. Galería de tiro
  17. Corrutinas
  18. Flappy Bird
  19. PONG
  20. Carreras
  21. Panel Animator
  22. Plataformas
  23. Plataformas
  24. Puzzle con Raycast
  25. Plataformas con RayCast
  26. Memory (juego de las parejas)
  27. Guardar y recuperar información almacenada
  28. Máscara
  29. Publicación
  30. Ejercicio: First Person Shooter
  31. Multijugador con Photon

PONG

Ponemos el fondo en pantalla

fondo PONG

Ponemos la pelota en pantalla

pelota pong con Unity

Añadimos el script de movimiento a la pelota

public class Pelota : MonoBehaviour
{
    int speedX;
    int speedY;
    float speed;

    void Start()
    {
        speed = Random.Range(5, 10);
        //La siguiente línea nos da un valor aleatorio que puede ser 0 o 1;
        speedX = Random.Range(0, 2);
        if (speedX == 0) speedX = -1;

        speedY = Random.Range(0, 2);
        if (speedY == 0) speedY = -1;

        //Para pasar la velocidad usamos un vector3 porque le pasamos 3 parámetros: x, y, z
        GetComponent<Rigidbody2D>().velocity = new Vector2(speedX * speed, speedY * speed);
    }
}

Hacemos que la pelota rebote contra los límites superior e inferior de la pantalla

  1. Colocamos dos cubos estirados en la parte superior e inferior de la pantalla.
  2. Asignamos un BoxCollider2D a los cubos.
  3. Asginamos un BoxCollider2D a la pelota, con Body Type: Dynamic y Gravity Scale:0.
  4. En el panel de proyecto, creamos un nuevo Physics Material 2D. A este material le asignamos estos valores:
    • Friction: 0
    • Bounciness: 1

Poniendo en pantalla las palas.

Las palas deberían de tener un area colisionable, de tal forma que la pelota rebote contra ellas.

Esto ya lo deberías saber hacer tú :D.

Moviendo las palas

Detectar la pulsación de las teclas:void Update() {
	if (Input.GetKey(KeyCode.A)){
		...
	}if (Input.GetKey(KeyCode.D)){	
		...
	}
}

En lugar de declarar un GameObject y acceder a su propiedad transform (lo cual es equivalente a hacer un GetComponent<Transform>() y por tanto, consume recursos) declararemos un objeto de tipo Transform en su lugar.

Desplazar al player:public Transform pala1;
...
pala1.Translate(0, 2 * Time.deltaTime, 0);

Limitando el movimiento de las palas

float limiteSuperior, limiteInferior;

void Start(){
    limiteInferior = Camera.main.ViewportToWorldPoint(new Vector3(0, 0, 0))[1]+pala1.GetComponent<BoxCollider2D>().size.y/2;
    limiteSuperior = Camera.main.ViewportToWorldPoint(new Vector3(0, 1, 0))[1]-pala1.GetComponent<BoxCollider2D>().size.y / 2;
}

if (Input.GetKey(KeyCode.Q) && pala1.transform.position.y < limiteSuperior)

Mejoras adicionales

  • Añadir un marcador que se incrementa cuando la pelota sale por uno de los lados de la pantalla.
  • Meter la escena de perder el juego.
icono de mandar un mailPreguntame lo que quieras!
Pablo Monteserín
contacta conmigoPablo Monteserín

El servicio de resolución de dudas técnicas es sólo para los usuarios premium. Si tienes cualquier otra duda, usa el formulario de contacto. ¡Gracias!