
Lección 1.4: Al volante
Tutorial
Beginner
+10XP
50 mins
(1284)
Unity Technologies

Descripción general:
En esta lección, tenemos que salir a la carretera y controlar el vehículo. Para ello, tenemos que detectar cuándo el jugador pulsa las teclas de dirección, y luego acelerar y girar el vehículo según esa entrada. Empleando nuevos métodos, vectores y variables, harás que el vehículo avance o retroceda y gire de izquierda a derecha.
Resultado del proyecto:
Cuando el jugador pulse las flechas arriba/abajo, el vehículo se moverá hacia delante y hacia atrás. Cuando el jugador pulse las teclas izquierda/derecha, el vehículo va a girar.
1. ¿Cómo permitir que el vehículo se mueva hacia la izquierda o derecha?
Hasta ahora, el vehículo solo podía avanzar en línea recta por la carretera. Necesitamos que se pueda mover de izquierda a derecha para evitar los obstáculos.
- En la parte superior de PlayerController.cs, añade public float turnSpeed; como variable.
- En Update(), añade transform.Translate(Vector3.right * Time.deltaTime * turnSpeed);.
- Inicia el juego y utiliza el deslizador de la variable turnSpeed para mover el vehículo de izquierda a derecha.
2. ¿Cómo hacer que el jugador controle el movimiento de izquierda a derecha según lo que presione?
Actualmente, solo podemos controlar el movimiento de izquierda a derecha del vehículo en el Inspector. Tenemos que conceder algún poder al jugador y permitirle controlar ese movimiento por sí mismo.
- Desde el menú superior, haz clic en Edit > Project Settings, selecciona Input Manager en la barra lateral y luego despliega Axes para explorar las entradas.
- En PlayerController.cs, añade public float horizontalInput como variable.
- En Update, asigna horizontalInput = Input.GetAxis("Horizontal");, luego haz una prueba para verlo en el Inspector.
- Añade la variable horizontalInput a la izquierda y derecha del método Desplazar para ganar control del vehículo.
- En el Inspector, edita las variables turnSpeed y speed para corregir la sensibilidad.
3. ¿Cómo tomar el control de la velocidad del vehículo?
Hemos permitido que el jugador controle el volante, pero también queremos que controle el acelerador y el freno.
- Define forwardInput como una nueva variable «public».
- En Update, asigna forwardInput = Input.GetAxis("Vertical");.
- Añade la variable forwardInput al método forward Translate, y luego haz una prueba.
4. ¿Cómo hacer que el vehículo rote en vez de deslizarse?
Hay algo extraño sobre el movimiento del vehículo... se desliza de izquierda a derecha en vez de girar. Hagamos que el vehículo gire como un auto real.
- En Update, llama transform.Rotate(Vector3.up, horizontalInput) y haz una prueba.
- Elimina la línea de código translates Right, luego haz una prueba.
- Añade * turnSpeed * Time.deltaTime y haz una prueba.
5. ¿Cómo limpiar el código y la Hierarchy?
Agregamos muchas cosas nuevas en esta lección. Antes de continuar y para ser más profesionales, necesitamos limpiar nuestros scripts y la Hierarchy para organizarlos mejor.
- En Hierarchy, haz clic derecho > Create Empty y renómbralo como «Obstacles», luego arrastra todos los obstáculos adentro.
- Inicializa los valores de las variables en PlayerController, luego haz que todas las variables sean private (excepto por la variable player).
- Usa // para agregar comentarios a cada sección del código.
6. Resumen de la lección
Nueva funcionalidad
- Cuando el jugador presiona las teclas arriba y abajo, el vehículo se mueve hacia adelante y hacia atrás.
- Cuando el jugador presiona las teclas izquierda y derecha, el vehículo gira.
Nuevos conceptos y habilidades
- Objetos vacíos
- Recibir datos del usuario
- Desplazar frente a rotar