210-Movimientos del Jugador

 

https://docs.google.com/presentation/d/e/2PACX-1vTmOVwH_YQ9fyXeLYxcemI1sHo-M-iACSd2VBlNIz-ppFx_Xzv1a0yF6P0DzGPOwPTbH6a_29-frSaA/pub?start=false&loop=false&delayms=3000

Movimiento y Física Básica con C#

Bienvenido a este curso, donde aprenderás los fundamentos para mover objetos en un juego 3D usando Unity y C#. A lo largo de las lecciones, construirás paso a paso un pequeño proyecto con una esfera controlable por el jugador, aplicando fuerzas físicas y respondiendo a las entradas del teclado. Todo el contenido está basado en una experiencia práctica real, con explicaciones claras y ejemplos funcionales.


Audiencia y Requisitos

  • Dirigido a: Principiantes en Unity y programación de videojuegos.

  • Conocimientos previos: Ninguno en particular; se recomienda tener instalado Unity (con el módulo de desarrollo para Visual Studio) y algo de familiaridad con el entorno de la interfaz.

  • Duración estimada: 4–6 horas (incluyendo práctica).


Estructura del Curso

El curso se divide en 7 módulos que cubren desde la creación de la escena hasta la implementación completa del movimiento físico.

  1. Configuración de la escena y objetos

  2. Transformaciones y posicionamiento

  3. Materiales y apariencia visual

  4. Introducción a los scripts en C#

  5. Movimiento del jugador con entradas del usuario

  6. Física y ajustes del Rigidbody

  7. Personalización, pruebas y proyecto final

Cada módulo incluye:

  • Objetivos de aprendizaje

  • Explicación teórica y práctica

  • Código de ejemplo

  • Ejercicios/actividades

  • Resumen


Módulo 1: Configuración de la escena y objetos

Objetivos

  • Crear una escena 3D en Unity.

  • Agregar objetos básicos (esfera y plano).

  • Reconocer la jerarquía y el inspector.

Contenido

1.1 Creando la escena

  1. Abre Unity y crea un nuevo proyecto 3D (o abre uno existente).

  2. En la ventana Hierarchy (Jerarquía), haz clic derecho → 3D Object → Sphere (Esfera). Asígnale el nombre Jugador.

  3. Crea un Plane (Plano) de la misma manera y nómbralo Piso.

1.2 El Inspector y el Transform

  • Selecciona la esfera. En el Inspector verás el componente Transform.

  • Este componente guarda la posición (X, Y, Z), rotación (ángulos) y escala (tamaño).

  • Puedes modificar estos valores numéricamente o usando las flechas (herramienta de movimiento) en la vista de escena.

Actividad 1

  • Coloca la esfera en Y = 0.5 para que esté ligeramente elevada sobre el piso.

  • Ubica el piso en Y = 0 y en X = 0, Z = 0.

Consejo: Si pierdes la posición de algún objeto, usa el botón Reset en el Transform (tres puntos → Reset) para volver a (0,0,0).


Módulo 2: Transformaciones y posicionamiento

Objetivos

  • Manipular objetos mediante el Transform.

  • Entender el sistema de coordenadas (ejes X, Y, Z).

  • Observar el efecto de la luz y las sombras.

Contenido

2.1 Ejes y movimiento

  • En Unity, X es izquierda-derecha, Y es arriba-abajo y Z es adelante-atrás.

  • Puedes mover la esfera arrastrando las flechas o cambiando los valores en el Inspector.

  • Al mover el piso en el eje Z, notarás que la sombra proyectada por la luz direccional cambia de posición; esto se debe a la dirección de la luz.

2.2 Luz y sombras

  • La escena incluye una Directional Light (luz direccional) que ilumina desde un ángulo.

  • Todos los objetos con un MeshRenderer proyectan sombras automáticamente (a menos que se desactive).

  • Prueba mover la esfera en Y para ver cómo la sombra se alarga o acorta.

Actividad 2

  • Ajusta la posición de la cámara (Main Camera) para tener una vista cenital (desde arriba) y observa cómo se comportan las sombras.


Módulo 3: Materiales y apariencia visual

Objetivos

  • Crear y asignar materiales.

  • Cambiar colores de los objetos.

  • Distinguir entre materiales y sus propiedades.

Contenido

3.1 Creación de un material

  • En la ventana Project, haz clic derecho → Create → Material.

  • Asígnale un nombre (por ejemplo, MaterialPiso).

  • Selecciona el material y en el Inspector, haz clic en el cuadrado de color (Albedo) y elige un color (verde, por ejemplo).

3.2 Asignación de materiales

  • Arrastra el material directamente sobre el objeto en la escena o en la jerarquía.

  • También puedes arrastrarlo al componente MeshRenderer del objeto en el Inspector.

  • Crea otro material para la esfera (color rojo) y asígnalo.

Actividad 3

  • Crea un tercer material de color azul y asígnalo al piso para ver cómo cambia la apariencia.

Nota: Los materiales solo afectan la apariencia, no la física.


Módulo 4: Introducción a los scripts en C#

Objetivos

  • Entender qué es un script y su rol en Unity.

  • Conocer los métodos Start() y Update().

  • Declarar variables y obtener componentes.

Contenido

4.1 Creación del script

  • En la ventana Project, haz clic derecho → Create → C# Script.

  • Nómbralo MovimientoJugador (sin espacios).

  • Haz doble clic para abrirlo en Visual Studio (o tu editor configurado).

4.2 Estructura básica

csharp
using UnityEngine;

public class MovimientoJugador : MonoBehaviour
{
    // Start se ejecuta una sola vez al inicio
    void Start()
    {
        
    }

    // Update se ejecuta cada frame
    void Update()
    {
        
    }
}
  • MonoBehaviour es la clase base para todos los scripts que se pueden adjuntar a GameObject.

  • Start(): ideal para inicializaciones.

  • Update(): usado para lógica que se actualiza continuamente.

4.3 Variables públicas y privadas

  • Declara una variable pública velocidad (tipo float) para controlar la rapidez del movimiento.

  • Declara una variable privada cuerpoRigido de tipo Rigidbody para acceder al componente físico.

csharp
public float velocidad = 5f;
private Rigidbody cuerpoRigido;

Actividad 4

  • Escribe estas declaraciones en tu script y guarda.


Módulo 5: Movimiento del jugador con entradas del usuario

Objetivos

  • Capturar la entrada del teclado con Input.GetAxis.

  • Usar un Vector3 para representar dirección.

  • Aplicar fuerzas usando AddForce.

Contenido

5.1 Inicialización del Rigidbody

  • Dentro de Start(), asigna el componente Rigidbody de la esfera:

csharp
void Start()
{
    cuerpoRigido = GetComponent<Rigidbody>();
}

5.2 Lectura de ejes

  • En Update(), guarda los valores de los ejes "Vertical" (W/S o flechas arriba/abajo) y "Horizontal" (A/D o flechas izquierda/derecha).

csharp
float moverVertical = Input.GetAxis("Vertical");
float moverHorizontal = Input.GetAxis("Horizontal");

5.3 Creación del vector de movimiento

  • Instancia un Vector3 con (moverHorizontal, 0, moverVertical).

  • El 0 en Y indica que no queremos movimiento vertical (por ahora).

5.4 Aplicación de fuerza

  • Usa AddForce para aplicar una fuerza en esa dirección, multiplicada por la velocidad.

csharp
Vector3 movimiento = new Vector3(moverHorizontal, 0f, moverVertical);
cuerpoRigido.AddForce(movimiento * velocidad);

Script completo (hasta aquí):

csharp
using UnityEngine;

public class MovimientoJugador : MonoBehaviour
{
    public float velocidad = 5f;
    private Rigidbody cuerpoRigido;

    void Start()
    {
        cuerpoRigido = GetComponent<Rigidbody>();
    }

    void Update()
    {
        float moverVertical = Input.GetAxis("Vertical");
        float moverHorizontal = Input.GetAxis("Horizontal");

        Vector3 movimiento = new Vector3(moverHorizontal, 0f, moverVertical);
        cuerpoRigido.AddForce(movimiento * velocidad);
    }
}

Actividad 5

  • Adjunta el script a la esfera (arrastrándolo al objeto o usando "Add Component" y buscándolo).

  • Asegúrate de que la esfera tenga un componente Rigidbody (agrégalo si no: Add Component → Physics → Rigidbody).


Módulo 6: Física y ajustes del Rigidbody

Objetivos

  • Configurar propiedades físicas: gravedad, masa, arrastre.

  • Observar el comportamiento inercial.

  • Realizar pruebas y depuración.

Contenido

6.1 El componente Rigidbody

  • Masa: influye en la inercia.

  • Arrastre (Drag): frena el movimiento lineal.

  • Arrastre angular: frena la rotación.

  • Usar Gravedad: activa/desactiva la caída.

6.2 Prueba inicial

  • Pulsa Play. La esfera caerá al piso por la gravedad.

  • Usa las flechas o WASD. Verás que la esfera se mueve pero tarda en frenar y cambiar de dirección debido a la inercia y al arrastre.

6.3 Ajustes

  • Si deseas que la esfera no caiga, desactiva Use Gravity en el Rigidbody.

  • Ajusta el Drag a un valor más alto (ej. 1) para que el movimiento sea más "pegajoso" y responda rápido.

  • Cambia la masa para sentir más o menos peso.

Actividad 6

  • Prueba diferentes combinaciones de gravedad, arrastre y masa. Anota cuál te da la sensación de control deseada.

Consejo: Si la esfera se sale del piso, puedes detener la ejecución y volver a posicionarla.


Módulo 7: Personalización, pruebas y proyecto final

Objetivos

  • Ajustar la cámara para una mejor vista.

  • Eliminar componentes no deseados.

  • Integrar todos los conceptos en un mini-proyecto funcional.

Contenido

7.1 Cambiar la cámara

  • Selecciona la Main Camera en la jerarquía.

  • Modifica su posición y rotación para obtener una vista aérea o en tercera persona.

  • Por ejemplo: Position (0, 5, -5) y Rotation (30, 0, 0) para una vista inclinada.

7.2 Gestión de componentes

  • Si agregaste el script dos veces por error, elimina el duplicado con el botón ...Remove Component.

  • Puedes resetear el Transform de cualquier objeto usando el menú de tres puntos.

7.3 Proyecto final

  • Crea una escena con:

    • Un piso grande (puedes escalarlo).

    • La esfera con el script y Rigidbody configurado.

    • Varios obstáculos (cubos, cilindros) para practicar esquivarlos.

  • Añade un material diferente a cada obstáculo.

  • Prueba el movimiento y ajusta la velocidad y arrastre hasta que te sientas cómodo.

Actividad 7 (Proyecto integrador)

  • Publica tu juego en modo Standalone (File → Build Settings) y compártelo con otros compañeros.


Resumen y próximos pasos

Has aprendido a:

  • Crear objetos 3D y gestionar sus transformaciones.

  • Asignar materiales para dar color.

  • Escribir un script en C# para mover un objeto con entradas de teclado.

  • Usar el Rigidbody para simular física realista.

  • Ajustar parámetros físicos para obtener el comportamiento deseado.

Siguientes pasos sugeridos:

  • Profundizar en otros tipos de movimiento (traslación directa, rotación, salto).

  • Aprender sobre colisiones y triggers.

  • Incorporar sonidos y efectos visuales.

  • Explorar la interfaz de usuario (UI) para mostrar puntuaciones.

¡Felicidades! Has completado el curso básico de movimiento y física en Unity. Ahora estás listo para seguir explorando y crear tus propios juegos.


Anexo: Código final del script (comentado)

csharp
using UnityEngine;

public class MovimientoJugador : MonoBehaviour
{
    // Velocidad del movimiento (ajustable desde el Inspector)
    public float velocidad = 5f;

    // Referencia al componente Rigidbody
    private Rigidbody cuerpoRigido;

    // Se ejecuta al iniciar el objeto
    void Start()
    {
        // Obtenemos el Rigidbody adjunto al mismo GameObject
        cuerpoRigido = GetComponent<Rigidbody>();
    }

    // Se ejecuta cada frame
    void Update()
    {
        // Capturamos la entrada del usuario en los ejes Vertical y Horizontal
        float moverVertical = Input.GetAxis("Vertical");
        float moverHorizontal = Input.GetAxis("Horizontal");

        // Creamos un vector de movimiento (sin componente Y)
        Vector3 movimiento = new Vector3(moverHorizontal, 0f, moverVertical);

        // Aplicamos fuerza al Rigidbody en la dirección del movimiento, escalada por la velocidad
        cuerpoRigido.AddForce(movimiento * velocidad);
    }
}

Nota final: Todo el contenido de este curso ha sido extraído y organizado a partir de una lección práctica de Unity. Se recomienda seguir los pasos en tu propio proyecto para afianzar los conceptos. ¡Diviértete creando

Comentarios

Entradas más populares de este blog

209-Crea tu Propio Espacio de Trabajo