Vitesse diagonale
Fait partie de la section Les bases du scripting dans Unity du Journey Unity de Coddy. Leçon 27 sur 85.
Maintiens simultanément les flèches droite et haut : les axes bruts donnent la direction (1, 0, 1). Sa longueur, .magnitude, est la racine carrée de 1 + 1, soit environ 1.41. Un personnage qui se déplace ainsi parcourt 1.41 unité en diagonale pendant le temps qu’il lui faut pour parcourir 1 unité tout droit : il va 41 % plus vite.
.normalized renvoie une copie d’un vecteur qui pointe dans la même direction et mesure exactement 1 unité : (1, 0, 1) devient environ (0.71, 0, 0.71), et (0, 0, 5) devient (0, 0, 1). Multiplié par une vitesse, il permet de se déplacer à cette vitesse quelle que soit la direction. Cette abeille vole vers la fleur à 2 unités par seconde, que la fleur soit loin ou proche ; sans .normalized, elle volerait d’autant plus vite que la fleur est éloignée :
public Vector3 flower = new Vector3(4, 1, 3);
public float speed = 2f;
void Update()
{
Vector3 toFlower = flower - transform.position;
transform.position += toFlower.normalized * speed * Time.deltaTime;
}Vector3.zero.normalized reste (0, 0, 0), puisque zéro n’a pas de direction. v.normalized laisse v tel quel ; v.Normalize() modifie v lui-même.
Défi
FacileFais en sorte que le personnage se déplace à la même vitesse en diagonale.
- Dans
Update(), construisVector3 direction = new Vector3(Input.GetAxisRaw("Horizontal"), 0, Input.GetAxisRaw("Vertical"));. - Ajoute
direction.normalized * speed * Time.deltaTimeàtransform.position.
Appuie sur « Jouer » et maintiens deux touches fléchées : le personnage se déplace en diagonale sans aller plus vite qu’en ligne droite. Puis clique sur « Vérifier ».
Essayez vous-même
using UnityEngine;
public class Walker : MonoBehaviour
{
public float speed = 4f;
void Update()
{
// Flèches ou WASD : se déplacer selon x et z à la vitesse speed, y compris en diagonale.
}
}
Toutes les leçons de Les bases du scripting dans Unity
1Les bases de C# dans Unity
Bonjour, UnityVariablesLes nombres décimaux ont besoin d’un fDu texte dans la consoleDes variables qui mémorisentSi et sinonComparer des nombresRécapitulatif : le collecteur de pièces7Boucles et méthodes
Répéter avec forBoucles imbriquéesÉcrire une méthodeMéthodes qui renvoient une réponseTableauxRécapitulatif : escalier10Rechercher des objets
Rechercher par nomTagsRechercher par typeLes références plutôt que la rechercheLe null de UnityRécapitulatif : la pièce la plus proche13Projet : Éviter les blocs
Le coureurDes blocs tombent du ciel2Mettez-le en mouvement
Placez le cubeDéplacez-le à chaque frameTournez chaque secondeDirigez avec les touchesRécapitulatif : pilotez le cube5Vecteurs
Additionner des vecteursDirectionsEspace local et espace globalVitesse diagonaleDistance entre des objetsVector3 est une structureRécapitulatif : pilote de drone8GameObjects et composants
Références dans l’InspectorObtenir un composantComposants manquantsAjouter un composantRequireComponentAfficher et masquerRécapitulatif : interrupteur3L’inspecteur
Champs de l’inspecteurSerializeFieldFlottants et MathfAttributs de l’inspecteurRécapitulatif : ascenseur6Transformations et hiérarchie
Parents et enfantsHissez le drapeauÉchelleRegarder les objetsSe déplacer vers un pointRécapitulatif : la lune en orbite9Projet : Attrape l’étoile
Le receveurUne étoile filanteEntraînez-vous par vous-même : Playground Unity