Anticipación
Parte de la sección Física y jugabilidad del Journey de Unity de Coddy. Lección 49 de 71.
Una cámara centrada en un jugador en movimiento muestra tanto de dónde viene como hacia dónde va. En cambio, una vista lateral puede adelantarse: colócala a unas pocas unidades por delante del jugador, del lado hacia el que se dirige.
El lado cambia cuando el jugador se da la vuelta, y un adelanto que cambia de golpe hace que toda la vista dé un salto. Así que guarda el adelanto en un campo y deslízalo hacia su nuevo valor con Mathf.MoveTowards, un poco en cada fotograma. Esta cámara de barco se adelanta 2 unidades y se desliza a 3 unidades por segundo:
float lead;
float heading = 1f; // 1 navegando hacia la derecha, -1 navegando hacia la izquierda
void LateUpdate()
{
lead = Mathf.MoveTowards(lead, heading * 2f, 3f * Time.deltaTime);
transform.position = new Vector3(boat.position.x + lead, transform.position.y, transform.position.z);
}El rumbo es la dirección en la que se movió el barco por última vez: compara su x con su x del fotograma anterior y mantén el rumbo sin cambios en un fotograma en el que no se haya movido, para que el barco conserve su adelanto cuando esté en reposo.
Desafío
IntermedioHaz que la cámara lateral muestre más de hacia dónde se dirige el corredor.
- En
LateUpdate(), compara la x del corredor conlastX: si se mueve a la derecha, establecedirectionen 1; si se mueve a la izquierda, en -1; si se queda quieto, déjalo como está. - Desplaza gradualmente
shift = Mathf.MoveTowards(shift, direction * ahead, shiftSpeed * Time.deltaTime);. - Establece la x de la cámara en
player.position.x + shift, manteniendo y y z.
Pulsa «Jugar» y corre en ambas direcciones. Después, pulsa «Comprobar».
Pruébalo tú mismo
using UnityEngine;
public class LookAheadCamera : MonoBehaviour
{
public Transform player;
public float ahead = 3f;
public float shiftSpeed = 4f;
void LateUpdate()
{
// Adelanta al jugador ahead unidades en la dirección en que se movió por última vez, desplazándote a shiftSpeed.
transform.position = new Vector3(player.position.x, transform.position.y, transform.position.z);
}
}
Todas las lecciones de Física y jugabilidad
1Cuerpo rígido
Gravedad y masaEmpujar con AddForceSaltar con un impulsoFixedUpdate para físicaVelocidadCuerpos cinemáticosRepaso: plataforma de lanzamiento4Corrutinas
InvocarInvokeRepeating y CancelInvokeTu primera corrutinaBucles en corrutinasDetener corrutinasRepaso: cuenta regresiva10Proyecto: Escape de la arena
La arenaCazadores2Colisiones
OnCollisionEnter¿Qué golpeé?Romper al impactarDe pie sobre el sueloRebote y fricciónFormas de los collidersRepaso: muro destructible5Proyecto: Carrera de Monedas
La pelota rodanteMonedas para recoger8La cámara
Seguimiento suaveCámara orbitalAnticipaciónSacudida de cámaraRepaso: cámara de persecución3Disparadores
Colisionadores de tipo triggerOnTriggerEnterObjetos coleccionablesLas cajas guardan el restoZonas letalesEntrada y salidaRepaso: llave y puertaPractica por tu cuenta: Playground de Unity