Videojuego PONG con Unity 3D

Curso de Unity 3D

20.  
39.  

Ponemos el fondo en pantalla

Ponemos la pelota en pantalla

pelota pong con Unity

Añadimos el script de movimiento a la pelota

Asginamos un BoxCollider2D a la pelota, con Body Type: Dynamic y Gravity Scale:0. También le añadimos un RigidBody2D para que el siguiente código funcione.

public class Ball: MonoBehaviour{
    void Start(){
        float speed = 4;
        int directionX = Random.Range(0, 2) == 0 ? 1 : -1;
        int directionY = Random.Range(0, 2) == 0 ? 1 : -1;

        GetComponent<Rigidbody2D>().velocity = new Vector2(directionX * speed, directionY * 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. Creamos un nuevo Physics Material 2D ( Botón derecho sobre el panel de proyecto → Create → 2D → Physics material 2D). A este material le asignamos estos valores:
    • Friction: 0
    • Bounciness: 1
  4. Asginamos el Physics Material 2D a la correspondiente propiedad del Box Collider 2D de la bola.

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

public KeyCode up;
public KeyCode down;

enum Controls{
    idle,
    up,
    down
}

void Update(){
    ...
    Move();
}

void Move(){
    if (controls == Controls.up){
        transform.Translate(0, 2 * Time.deltaTime, 0);
    }
    ...
}

Limitando el movimiento de las palas

Puede que tengamos que echarle un vistazo a este enlace.

float bottomLimit, topLimit;
  
void Start(){
        bottomLimit = Utils.GetBottomSide() + GetComponent<BoxCollider2D>().size.y / 2;
        topLimit = Utils.GetTopSide() - GetComponent<BoxCollider2D>().size.y / 2;
}

void Update(){
    if (Input.GetKey(up) && transform.position.y < topLimit){
            directions = Directions.up;
    }
    ...

Si la pelota sale por los límites izquierdo y derecho de la pantalla, debe volver a ser lanzada

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.
← Flappy Bird con Unity
Hacer el videojuego Snake con Unity 3D →

Aviso Legal | Política de privacidad