El corredor
Parte de la sección Fundamentos de scripting en Unity del Journey de Unity de Coddy. Lección 75 de 85.
En este capítulo crearás un juego pequeño, Esquiva los bloques. Guías a un corredor por un carril mientras caen bloques del cielo; un solo toque pone fin a la partida. Todo el juego está en un único script, Runner, que incorpora una función nueva en cada lección: guiar al corredor, hacer caer bloques, eliminarlos, detectar el impacto y llevar la puntuación.
La primera función es guiar al corredor sin que salga del carril, usando Mathf.Clamp(value, min, max) de Atrapa la estrella: devuelve min si el valor está por debajo del intervalo, max si está por encima y, en caso contrario, el propio valor. La ubicación de la limitación importa. Este medidor de carga se llena mientras mantienes pulsada la barra espaciadora, se vacía cuando no la mantienes pulsada y nunca sale del intervalo 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 usando ese valor. Además, Mathf.Clamp devuelve un número nuevo en lugar de modificar la variable que le pasas, así que asigna el resultado de nuevo a esa variable.
Desafío
IntermedioEmpieza Dodge the Blocks: guía al corredor por su carril.
- En
Update(), copiatransform.positionenVector3 py sumaInput.GetAxisRaw("Horizontal") * speed * Time.deltaTimeap.x. El eje sin procesar se mueve a toda velocidad de inmediato. - Asigna
p.x = Mathf.Clamp(p.x, -laneEdge, laneEdge);y, después,transform.position = p;.
Pulsa «Jugar», haz clic en el juego y corre hasta ambos extremos: el corredor se detiene en los bordes. Después, pulsa «Comprobar».
Pruébalo tú mismo
using UnityEngine;
public class Runner : MonoBehaviour
{
[SerializeField] private float speed = 6f;
[SerializeField] private float laneEdge = 4f;
void Update()
{
// muévete a lo largo de x con las flechas y luego mantén x dentro del carril
}
}
Todas las lecciones de Fundamentos de scripting en Unity
1Conceptos básicos de C# en Unity
Hola, UnityVariablesLos decimales necesitan una fTexto en la consolaVariables que recuerdanIf y ElseComparar númerosRepaso: Recolector de monedas7Bucles y métodos
Repetir con forBucles dentro de buclesEscribir un métodoMétodos que respondenArraysRepaso: escalera10Encontrar cosas
Buscar por nombreEtiquetasBuscar por tipoLas referencias vencen a FindEl null de UnityRepaso: moneda más cercana13Proyecto: Esquiva los bloques
El corredorBloques desde el cielo2Haz que se mueva
Coloca el cuboMuévelo en cada fotogramaGira cada segundoDirige con las teclasRepaso: conduce el cubo5Vectores
Sumar vectoresDireccionesEspacio local y mundialVelocidad diagonalDistancia entre objetosVector3 es una estructuraRepaso: piloto de dron8GameObjects y componentes
Referencias en el InspectorObtener un componenteComponentes faltantesAñadir un componenteRequireComponentMostrar y ocultarRepaso: interruptor de luz3El Inspector
Campos del InspectorSerializeFieldFloats y MathfAtributos del InspectorRepaso: Ascensor6Transformaciones y jerarquía
Padres e hijosIza la banderaEscalaMira las cosasMuévete hacia un puntoRepaso: Luna en órbita9Proyecto: Atrapa la estrella
El cazadorUna estrella fugaz12El ciclo de vida de un script
Awake y StartUpdate y LateUpdateOnEnable y OnDisableEl orden del ciclo de vidaRepaso: registrador del ciclo de vidaPractica por tu cuenta: Playground de Unity