El corredor
Parte de la sección Fundamentos de scripting en Unity del Journey de Unity de Coddy. Lección 60 de 67.
En este capítulo crearás un juego pequeño, Dodge the Blocks. Diriges a un corredor por un carril mientras caen bloques del cielo, y un solo toque pone fin a la partida. Todo el juego está en un único script, Runner, que incorpora una característica en cada lección: la dirección, los bloques que caen, su eliminación, el impacto y una puntuación.
La primera característica es la dirección, que se mantiene dentro del carril, con Mathf.Clamp(value, min, max) de Catch the Star: devuelve min cuando el valor está por debajo del rango, max cuando está por encima y, en los demás casos, el propio valor. Dónde se aplica la limitación es importante. Este medidor de carga se llena mientras mantienes pulsada la barra espaciadora, se vacía cuando no la mantienes pulsada y nunca sale del rango de 0 a 10:
[SerializeField] private float charge = 0f;
void Update()
{
if (Input.GetKey(KeyCode.Space))
{
charge += 4f * Time.deltaTime;
}
else
{
charge -= 2f * Time.deltaTime;
}
charge = Mathf.Clamp(charge, 0f, 10f);
transform.localScale = new Vector3(0.5f, charge, 0.5f);
}La limitación se aplica después del cambio. Si se limitara primero, el valor podría terminar el fotograma un paso por encima del límite, y la barra se dibujaría a partir de ese valor. Además, Mathf.Clamp devuelve un número nuevo en lugar de cambiar la variable que le pasas, así que asigna el resultado de nuevo a la variable.
Desafío
IntermedioEmpieza Dodge the Blocks con el corredor. El Inspector asigna al script Runner los valores speed (6) y laneEdge (4).
- Las flechas izquierda y derecha mueven al corredor a lo largo del eje x a
speedunidades por segundo. - Su coordenada x nunca baja de
-laneEdgeni superalaneEdge, así que permanece en el carril.
Pulsa Play, haz clic en el juego y corre hasta ambos extremos del carril, después pulsa Check.
Pruébalo tú mismo
using UnityEngine;
public class Runner : MonoBehaviour
{
[SerializeField] private float speed = 6f;
[SerializeField] private float laneEdge = 4f;
void Update()
{
// mueve a lo largo de x con las flechas y luego mantén x dentro del carril
}
}
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Fundamentos de scripting en Unity
1Tu primer script
Hola, UnityColoca el cuboMuévete en cada fotogramaGira cada segundoDirige con las teclasRepaso: conduce el cubo4Vectores
Sumar vectoresDireccionesEspacio local y globalVelocidad diagonalDistancia entre objetosVector3 es una estructuraRepaso: piloto de dron7Proyecto: Atrapa la estrella
El atrapadorUna estrella fugaz10El ciclo de vida de los scripts
Awake y StartUpdate y LateUpdateOnEnable y OnDisableEl orden del ciclo de vidaRepaso: registrador del ciclo de vida2El Inspector
Campos del InspectorSerializeFieldNúmeros decimales y MathfAtributos del InspectorRepaso: Ascensor5Transformaciones y jerarquía
Padres e hijosEscalaMirar objetosMoverse hacia un puntoRepaso: Luna en órbita8Encontrar cosas
Buscar por nombreEtiquetasBuscar por tipoLas referencias superan a FindEl valor nulo de UnityRepaso: la moneda más cercana11Proyecto: Esquiva los bloques
El corredorBloques que caen6GameObjects y componentes
Referencias en el InspectorObtener un componenteComponentes faltantesAñadir un componenteRequireComponentMostrar y ocultarRepaso: interruptor de luz