Antecipação
Parte da seção Física e Jogabilidade do Journey de Unity da Coddy. Lição 49 de 71.
Uma câmera centralizada em um jogador em movimento mostra tanto o caminho que ele já percorreu quanto para onde está indo. Em vez disso, uma visão lateral pode se adiantar: fique algumas unidades à frente do jogador, no lado para o qual ele está indo.
O lado muda quando o jogador dá meia-volta, e uma antecipação que muda de lado instantaneamente faz a visão inteira pular. Então, mantenha a antecipação em um campo e deslize-a até o novo valor com Mathf.MoveTowards, um pouco a cada quadro. Esta câmera de barco se adianta 2 unidades e desliza a 3 unidades por segundo:
float lead;
float heading = 1f; // 1 navegando para a direita, -1 navegando para a esquerda
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);
}A direção é o sentido em que o barco se moveu por último: compare sua posição x com a posição x no quadro anterior e mantenha a direção inalterada em um quadro em que ele não se moveu, para que um barco parado mantenha a antecipação.
Desafio
MédioFaça com que a câmera lateral mostre mais da direção para a qual o corredor está indo.
- Em
LateUpdate(), compare o x do corredor comlastX: mover-se para a direita definedirectioncomo 1, para a esquerda como -1; ficar parado mantém o valor. - Deslize
shift = Mathf.MoveTowards(shift, direction * ahead, shiftSpeed * Time.deltaTime);. - Defina o x da câmera como
player.position.x + shift, mantendo y e z.
Pressione “Jogar” e corra nas duas direções. Em seguida, pressione “Verificar”.
Experimente você mesmo
using UnityEngine;
public class LookAheadCamera : MonoBehaviour
{
public Transform player;
public float ahead = 3f;
public float shiftSpeed = 4f;
void LateUpdate()
{
// Mantenha a câmera ahead unidades à frente do player na direção em que ele se moveu pela última vez, deslizando à velocidade shiftSpeed.
transform.position = new Vector3(player.position.x, transform.position.y, transform.position.z);
}
}
Todas as lições de Física e Jogabilidade
1Rigidbody
Gravidade e MassaEmpurrar com AddForcePular com um ImpulsoFixedUpdate para FísicaVelocidadeCorpos CinemáticosRevisão: Plataforma de Lançamento4Corrotinas
InvocarInvocar repetidamente, Cancelar invocaçãoSua primeira corrotinaLoops em corrotinasInterrompendo corrotinasRevisão: contagem regressiva10Projeto: Fuga da Arena
A ArenaCaçadores2Colisões
OnCollisionEnterO que eu acertei?Quebre no impactoNo chãoQuique e atritoFormas dos collidersRevisão: Parede destrutível5Projeto: Corrida das Moedas
A Bola RolanteMoedas para Coletar8A Câmera
Acompanhamento SuaveCâmera OrbitalAntecipaçãoTremor da CâmeraRevisão: Câmera de PerseguiçãoPratique por conta própria: Playground de Unity