
Lección 3.1: Fuerza de salto
Tutorial
Beginner
+10XP
90 mins
(587)
Unity Technologies

Descripción general:
El objetivo de esta lección es configurar la jugabilidad básica de este prototipo. Comenzaremos por crear un nuevo proyecto e importar los archivos de inicio. Después elegiremos un lindo fondo y un personaje que el jugador controlará; permitiremos que ese personaje salte al presionar la barra espaciadora. También elegiremos un obstáculo para el jugador y crearemos un Spawn Manager que los arroje en el camino del jugador a intervalos medidos.
Resultado del proyecto:
Se configurarán el personaje, fondo y obstáculo de tu elección. El jugador podrá presionar la barra espaciadora para hacer que el personaje salte mientras los obstáculos se generan en el extremo de la pantalla y bloquean el camino del jugador.
Resources
1. ¿Cómo abrir el prototipo y cambiar el fondo?
La primera cosa que necesitamos hacer es configurar un nuevo proyecto, importar los archivos de inicio y elegir un fondo para el juego.
- Abre Unity Hub y crea un proyecto «Prototype 3» vacío en el directorio de tu curso en la versión correcta de Unity.
Si olvidaste cómo hacerlo, consulta las instrucciones en la Lección 1.1. Paso 1. - Haz clic para descargar los Archivos de inicio del Prototype 3, extrae la carpeta comprimida y después importa el .unitypackage a tu proyecto.
Si olvidaste cómo hacerlo, consulta las instrucciones en la Lección 1.1. Paso 2. - Abre la Escena de Prototype 3 y elimina la Escena de muestra sin guardar.
- Selecciona el objeto Background en la Hierarchy, después en el componente Sprite Renderer > Sprite, selecciona la imagen _City, _Nature o _Town
2. ¿Cómo elegir y configurar un personaje jugador?
Después de iniciar un proyecto y elegir el fondo, necesitamos configurar el personaje que el jugador controlará.
- En Course Library > Characters, arrastra un personaje hasta la Hierarchy, cámbiale el nombre a «Player», luego gíralo sobre el eje Y para que apunte a la derecha.
- Agrega un componente Rigidbody.
- Agrega un Box Collider, después edita los límites del colisionador.
- Crea una nueva carpeta «Scripts» en Assets, crea un Script «PlayerController» dentro y adjúntalo al jugador.
3. ¿Cómo hacer que el jugador salte al inicio?
Hasta ahora solo hemos llamado métodos en la totalidad de un GameObject o el componente Transform. Si queremos más control sobre la fuerza y la gravedad del jugador, necesitamos llamar métodos específicamente en el componente Rigidbody del jugador.
- En PlayerController.cs, declara una nueva variable private Rigidbody playerRb;.
- En Start(), inicializa playerRb = GetComponent<Rigidbody>();.
- En Start(), utiliza el método AddForce para hacer que el jugador salte al inicio del juego.
4. ¿Cómo hacer que el jugador salte si se presiona la barra espaciadora?
No queremos que el jugador salte al inicio. Solo debe saltar cuando se presiona la barra espaciadora.
- En Update() agrega un enunciado condicional if que verifique si la barra espaciadora está presionada.
- Copia y pega el código AddForce de Start() en el enunciado condicional.
- Agrega el parámetro ForceMode.Impulse a la llamada AddForce y después reduce el valor multiplicador de fuerza.
5. ¿Cómo corregir la fuerza y la gravedad del salto?
Necesitamos darle al jugador un salto perfecto al corregir la fuerza del salto, la gravedad de la Escena y la masa del personaje.
- Reemplaza el valor preprogramado con una nueva variable public float jumpForce.
- Agrega una nueva variable public float gravityModifier y en Start(), agrega Physics.gravity *= gravityModifier;.
- En el Inspector, corrige los valores de masa gravityModifier, jumpForce y Rigidbody para hacerlo más divertido.
6. ¿Cómo evitar que el jugador realice saltos dobles?
Como habrás notado, el jugador puede usar la barra espaciadora repetidamente para lanzar al personaje hasta las nubes. Para evitar esa ridícula situación y hacer que el salto sea más realista, necesitamos un enunciado condicional que garantice que el jugador esté en el suelo antes de saltar.
- Agrega una nueva variable public bool isOnGround y defínela igual a true.
- En el enunciado condicional que hace saltar al jugador, define isOnGround = false, después prueba.
- Agrega una condición && isOnGround al enunciado condicional.
- Agrega un nuevo método void OnCollisionEnter y define isOnGround = true en dicho método, después prueba.

7. ¿Cómo crear un obstáculo y moverlo a la izquierda?
Hemos logrado que el jugador salte por los aires, pero ahora necesita algo sobre lo cual saltar. Vamos a utilizar un poco de código que ya conocemos para crear una instancia del obstáculo y arrojarlo en el camino del jugador.
- En Course Library > Obstacles, agrega un obstáculo, cambia su nombre a «Obstacle» y posiciónalo donde debe generarse.
- Aplica los componentes Rigidbody y Box Collider y edita los límites del colisionador para que se ajusten al obstáculo.
- Crea una nueva carpeta «Prefabs» y arrástrala para crear una nueva Original Prefab.
- Crea un nuevo script «MoveLeft», aplícalo al Obstacle y ábrelo.
- En MoveLeft.cs, escribe el código para desplazarlo a la izquierda de acuerdo con la variable de velocidad.
- Aplica el código MoveLeft al Background.
8. ¿Cómo crear un Spawn Manager?
De forma similar al último proyecto, necesitamos crear un objeto Spawn Manager vacío que creará instancias de Prefabs de obstáculos.
- Crea un nuevo objeto «Spawn Manager» vacío, luego aplícale un nuevo Script SpawnManager.cs.
- En SpawnManager.cs, declara un nuevo public GameObject obstaclePrefab;, luego asigna tu Prefab a la nueva variable en el Inspector.
- Declara un nuevo private Vector3 spawnPos en la ubicación del instanciador.
- En Start(), crea una instancia de un nuevo Prefab de obstáculo, luego elimina tu Prefab de la Escena y prueba.
9. ¿Cómo generar obstáculos a intervalos?
Nuestro Spawn Manager crea instancias de Prefabs al iniciarse, pero debemos escribir una nueva función y utilizar InvokeRepeating si queremos que genere obstáculos a intervalos definidos. Por último, debemos modificar el Rigidbody del personaje para que no pueda derribarse.
- Crea un nuevo método void SpawnObstacle y mueve dentro la llamada para Crear una instancia.
- Crea nuevas variables float para startDelay y repeatRate.
- Haz que tus obstáculos se generen en intervalos con el método InvokeRepeating().
- En el componente Player Rigidbody, amplía las Constraints, después Freeze todo excepto la posición Y.
10. Resumen de la lección
Nueva funcionalidad
- El jugador salta al presionar la barra espaciadora.
- El jugador no puede hacer doble salto.
- Los obstáculos y el fondo se mueven a la izquierda.
- Los obstáculos se generan a intervalos.
Conceptos y habilidades clave
- GetComponent
- ForceMode.Impulse
- Physics.Gravity
- Restricciones de Rigidbody
- Variables de Rigidbody
- Booleanos
- Operador Multiply/Assign (“*)
- Operador And (&&)
- OnCollisionEnter()
Siguiente lección
- Vamos a corregir ese extraño efecto que creamos al mover el fondo a la izquierda. Utilizaremos código para hacer que se desplace constantemente.