Anticipation
Fait partie de la section Physique et gameplay du Journey Unity de Coddy. Leçon 49 sur 71.
Une caméra centrée sur un joueur en mouvement montre autant l’endroit d’où il vient que celui vers lequel il se dirige. Une vue latérale peut plutôt le devancer : place-la quelques unités devant le joueur, du côté vers lequel il se dirige.
La vue latérale s’inverse quand le joueur fait demi-tour, et une avance qui s’inverse instantanément fait bondir toute la vue. Gardez donc l’avance dans un champ et faites-la glisser vers sa nouvelle valeur avec Mathf.MoveTowards, un peu à chaque image. Cette caméra de bateau devance le bateau de 2 unités et glisse à raison de 3 unités par seconde :
float lead;
float heading = 1f; // 1 navigue vers la droite, -1 navigue vers la gauche
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);
}La direction est celle dans laquelle le bateau s’est déplacé en dernier : comparez son x à celui de l’image précédente et ne modifiez pas la direction pendant une image où il n’a pas bougé, afin qu’un bateau à l’arrêt conserve son avance.
Défi
MoyenFais en sorte que la caméra latérale montre davantage la direction dans laquelle le coureur avance.
- Dans
LateUpdate(), compare l’abscisse du coureur àlastX: s’il se déplace vers la droite, définisdirectionsur 1 ; vers la gauche, sur -1 ; s’il reste immobile, ne la modifie pas. - Fais glisser
shift = Mathf.MoveTowards(shift, direction * ahead, shiftSpeed * Time.deltaTime);. - Définis l’abscisse de la caméra sur
player.position.x + shift, en conservant y et z.
Appuie sur « Jouer » et cours dans les deux directions. Puis appuie sur « Vérifier ».
Essayez vous-même
using UnityEngine;
public class LookAheadCamera : MonoBehaviour
{
public Transform player;
public float ahead = 3f;
public float shiftSpeed = 4f;
void LateUpdate()
{
// Place la caméra ahead unités devant le joueur dans la direction de son dernier déplacement, en la faisant glisser à la vitesse shiftSpeed.
transform.position = new Vector3(player.position.x, transform.position.y, transform.position.z);
}
}
Toutes les leçons de Physique et gameplay
1Corps rigide
Gravité et massePousser avec AddForceSauter avec une impulsionFixedUpdate pour la physiqueVitesseCorps cinématiquesRécapitulatif : plateforme de lancement4Coroutines
InvoquerInvokeRepeating, CancelInvokeVotre première coroutineBoucles dans les coroutinesArrêter les coroutinesRécapitulatif : compte à rebours7Rotation
Angles d’EulerQuaternionsRegardez dans la direction où vous vous déplacezTourner en douceurRécapitulatif : tourelle10Projet : Évasion de l’arène
L’arèneLes chasseurs2Collisions
OnCollisionEnterQu’est-ce que j’ai touché ?Se briser à l’impactRester au solRebond et frictionFormes des collidersRécapitulatif : mur destructible5Projet : Course aux pièces
La balle roulanteDes pièces à ramasser8La caméra
Suivi fluideCaméra orbitaleAnticipationTremblement de la caméraRécapitulatif : caméra de poursuite3Déclencheurs
Colliders déclencheursOnTriggerEnterObjets à ramasserLes caisses gardent le resteZones mortellesEntrée et sortieRécapitulatif : clé et porteEntraînez-vous par vous-même : Playground Unity