Menu
CoddyTech

La paleta

Lección 1 de 19 del curso Juego en Unity: Rompe ladrillos de Coddy.

En este curso construyes Brick Breaker en 3D, una característica de una lección: una paleta, una pelota que rebota, una pared de ladrillos, vidas, niveles y potenciadores. Todo se mueve en el plano x e y en z 0. Los scripts Paddle, Ball, Brick, GameManager y PowerUp son, por ahora, esqueletos. «Jugar» ejecuta el juego; «Comprobar» lo evalúa.

La paleta tiene un Rigidbody cinemático, que se mueve con rb.MovePosition en FixedUpdate(), para que la física detecte su movimiento. Un cuerpo cinemático atraviesa las paredes, así que el script lo mantiene dentro. Si limitas el centro justo en la pared, la mitad de la paleta quedaría dentro de ella: el límite es la pared menos la mitad del ancho. Con paredes en -6 y 6 y una paleta de 2 de ancho:

float half = 2f / 2f;
target.x = Mathf.Clamp(target.x, -6f + half, 6f - half);
rb.MovePosition(target);

El centro se mantiene entre -5 y 5, así que los extremos se detienen exactamente en las paredes. Leer el ancho de transform.localScale.x en cada paso mantiene el límite correcto si la paleta crece.

challenge icon

Desafío

Fácil

Mueve la pala entre las paredes.

  1. En Paddle's FixedUpdate(), haz que float input sea -1 mientras se mantenga pulsada la flecha izquierda o A, 1 para la flecha derecha o D y, en caso contrario, 0.
  2. Calcula Vector3 target = rb.position + Vector3.right * input * speed * Time.fixedDeltaTime;
  3. Con float half = transform.localScale.x / 2f;, limita target.x entre -wallX + half y wallX - half, después rb.MovePosition(target);

Pulsa «Jugar» y deslízate hasta ambas paredes: la pala se detiene en cada una. Después, pulsa «Comprobar».

Pruébalo tú mismo

using UnityEngine;
using UnityEngine.InputSystem;

public class Paddle : MonoBehaviour
{
    public float speed = 14f;
    public float wallX = 8f;   // las caras interiores de las paredes laterales están en -wallX y wallX

    Rigidbody rb;

    void Awake()
    {
        rb = GetComponent<Rigidbody>();
    }

    void FixedUpdate()
    {
        // Muévete con las flechas o con A y D, y mantente entre las paredes.
    }
}

Todas las lecciones de Juego en Unity: Rompe ladrillos

Practica por tu cuenta: Playground de Unity