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.
Configuración de la escena y objetos
Transformaciones y posicionamiento
Materiales y apariencia visual
Introducción a los scripts en C#
Movimiento del jugador con entradas del usuario
Física y ajustes del Rigidbody
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
Abre Unity y crea un nuevo proyecto 3D (o abre uno existente).
En la ventana Hierarchy (Jerarquía), haz clic derecho → 3D Object → Sphere (Esfera). Asígnale el nombre
Jugador.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.5para que esté ligeramente elevada sobre el piso.Ubica el piso en
Y = 0y enX = 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()yUpdate().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
using UnityEngine;
public class MovimientoJugador : MonoBehaviour
{
// Start se ejecuta una sola vez al inicio
void Start()
{
}
// Update se ejecuta cada frame
void Update()
{
}
}MonoBehavioures 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(tipofloat) para controlar la rapidez del movimiento.Declara una variable privada
cuerpoRigidode tipoRigidbodypara acceder al componente físico.
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
Vector3para representar dirección.Aplicar fuerzas usando
AddForce.
Contenido
5.1 Inicialización del Rigidbody
Dentro de
Start(), asigna el componente Rigidbody de la esfera:
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).
float moverVertical = Input.GetAxis("Vertical");
float moverHorizontal = Input.GetAxis("Horizontal");5.3 Creación del vector de movimiento
Instancia un
Vector3con(moverHorizontal, 0, moverVertical).El 0 en Y indica que no queremos movimiento vertical (por ahora).
5.4 Aplicación de fuerza
Usa
AddForcepara aplicar una fuerza en esa dirección, multiplicada por la velocidad.
Vector3 movimiento = new Vector3(moverHorizontal, 0f, moverVertical);
cuerpoRigido.AddForce(movimiento * velocidad);Script completo (hasta aquí):
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)yRotation (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)
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
Publicar un comentario