Distance entre des objets
Fait partie de la section Les bases du scripting dans Unity du Journey Unity de Coddy. Leçon 28 sur 85.
Vector3.Distance(a, b) indique à quelle distance se trouvent deux points, en unités, mesurée en ligne droite selon les trois axes. C'est la longueur du déplacement entre eux, (a - b).magnitude, donc l'ordre de a et b n'a pas d'importance. De (0, 0, 0) à (3, 0, 4), la distance est de 5.
En comparant une distance à un nombre, un script sait quand quelque chose est proche. Ce campeur ne peut se réchauffer les mains qu'à moins de 4 unités du feu de camp, dont la position est définie dans l'Inspector :
public Vector3 campfire = new Vector3(3, 0, 4);
void Update()
{
float d = Vector3.Distance(transform.position, campfire);
if (d < 4f && Input.GetKeyDown(KeyCode.Space))
{
Debug.Log("You warm your hands");
}
}La distance tient aussi compte de la hauteur : un campeur situé 5 unités au-dessus du feu se trouve à 5 unités de celui-ci, et non à 0. Lorsque la hauteur ne doit pas être prise en compte, compare deux points ayant la même coordonnée y.
Défi
FacileRéduis la vitesse du marcheur de moitié dans le marais.
- Sous
float s = speed;, écrisif (Vector3.Distance(transform.position, swamp) < 3f). - À l’intérieur, définis
s = speed / 2;. Laisse le champspeedet les lignes de déplacement tels quels.
Appuie sur « Jouer » et traverse le marais en marchant tout droit : le marcheur ralentit dans le marais. Puis appuie sur « Vérifier ».
Essayez vous-même
using UnityEngine;
public class Walker : MonoBehaviour
{
public float speed = 4f;
public Vector3 swamp = new Vector3(0, 0.5f, 0);
void Update()
{
float s = speed;
// À moins de 3 unités du marais, déplacez-vous à la moitié de la vitesse.
Vector3 direction = new Vector3(Input.GetAxisRaw("Horizontal"), 0, Input.GetAxisRaw("Vertical"));
transform.position += direction.normalized * s * Time.deltaTime;
}
}
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