Creación y Uso de Colliders y Scripts en Unity para Videojuegos

Clase 8 de 53Curso de C# para Videojuegos

Resumen

Mejora el control de colisiones, construye escenarios reutilizables y programa un Player Controller sólido en C# sin perder rendimiento. Aquí verás por qué combinar colliders es una solución práctica, cuándo evitar edge collider 2D y cómo organizar métodos y variables en Unity para trabajar con claridad desde el primer día.

¿Cómo combinar colliders para formas complejas en Unity?

Cuando una forma no encaja con un único collider (caja, cápsula o círculo), la solución eficaz es combinarlos. Una roca irregular puede requerir dos colliders distintos para aproximar su volumen. Es una simplificación que evita calcular medio millón de polígonos y mejora el detalle de colisión por partes.

  • Combinar varios colliders en un mismo objeto es válido y estable.
  • Úsalo para formas orgánicas o personajes complejos.
  • Ejemplo mental: piernas y brazos con cápsulas, cabeza con esfera, torso con cápsula.
  • Mantiene el rendimiento y mejora la precisión de contacto.

¿Cuándo usar o evitar edge collider 2D?

El edge collider 2D es solo una línea: no define interior ni exterior. Por eso no es sólido como caja, cápsula o círculo, y puede permitir que parte de un GameObject atraviese el otro si no se configura con cuidado.

  • Característica: trazo lineal sin volumen interior.
  • Riesgo: penetraciones y configuraciones más complejas.
  • Recomendación: usar solo para casos muy superficiales o con mucha experiencia.
  • Preferible: colliders sólidos cuando necesites colisiones fiables.

¿Cómo crear el Player Controller en C# y configurar métodos y variables?

Antes de programar, deja solo el protagonista y una plataforma para que no caiga por la física. Crea el script en la carpeta Scripts: botón derecho > Create > C# Script y nómbralo “Player Controller”. Unity genera la estructura base con using, clase pública que hereda de MonoBehaviour y los métodos Start y Update.

  • Consejo de rendimiento: en Update evita código pesado para no perder frames.
  • Editor de código: usa Visual Studio u otro editor que prefieras.
  • Añadir el script al jugador: arrastra el archivo al objeto en la jerarquía o al inspector.
  • Verás las variables públicas editables en el inspector con nombres legibles por el parsing.

¿Qué estructura base crea Unity en un script de C#?

using UnityEngine;

public class PlayerController : MonoBehaviour
{
    // Variables del movimiento del personaje
    public float jumpForce = 6f; // editable en el inspector

    private Rigidbody2D rigidBody; // componente de física 2D

    void Start()
    {
        // se ejecuta al iniciar el juego
    }

    void Update()
    {
        // se ejecuta cada frame
    }

    void Jump()
    {
        // reproduce la animación de salto (sin retorno)
    }
}

¿Cómo nombrar métodos y variables con camel case?

En C#, los métodos empiezan en mayúscula y siguen camel case: Jump. Las variables empiezan en minúscula: jumpForce. Un método void no devuelve valor; si devolviera datos, usarías tipos como boolean, int o float.

  • Métodos de Unity: Start y Update deben llamarse exactamente así.
  • Llaves: Visual Studio cierra automáticamente la llave de apertura.
  • Saltar: método sin parámetros cuando solo dispara una animación.
// Método sin retorno ni parámetros
void Jump()
{
    // lógica/animación de salto
}

¿Cómo exponer parámetros y enlazar componentes en el inspector?

Las variables públicas se editan desde el inspector. Ejemplo: jumpForce como float con sufijo F para decimales. Para componentes existentes en el objeto (como el Rigidbody2D), usa una variable privada y evita nombres conflictivos.

  • Pública editable: valores ajustables sin reabrir el código.
  • Privada: datos internos como el rigid body del personaje.
  • Evita colisiones de nombres con miembros de MonoBehaviour. Cambia a rigidBody (B mayúscula) o playerRigidBody.
// Expuesta en el inspector
public float jumpForce = 6f;

// Interna y clara de leer
private Rigidbody2D rigidBody;      // alternativa 1
// private Rigidbody2D playerRigidBody; // alternativa 2
  • Asignación del script: arrastra el archivo al GameObject del jugador.
  • Lectura en el inspector: Unity separa “Jump Force” por parsing de mayúsculas.
  • Recuerda: usa Rigidbody2D en juegos 2D; el 3D no funciona en 2D.

¿Te gustaría ver más ejemplos de movimiento, salto y físicas en 2D? Deja tus preguntas o dudas en los comentarios y cuéntame qué te gustaría implementar después.