FiveM 3D Distance Calculator

Calculez les distances 3D et 2D entre deux ensembles de coordonnées. Obtenez des estimations de temps de trajet et un code Lua prêt à l'emploi.

Point A

Point B

À quoi sert cet outil

Les distances déterminent quand un marqueur est dessiné, quand une interaction devient possible et quand une boucle peut se mettre en veille. Se tromper sur ces distances est une des causes les plus courantes d'un script qui consomme trop de ressources. Cette calculatrice vous donne la distance 3D et 2D entre deux points et écrit la comparaison sous la forme la moins coûteuse en performances.

Comment l'utiliser

  1. Étape 1:

    Entrez les deux points, par exemple la position du joueur et la cible d'une interaction.

  2. Étape 2:

    Lisez la distance 3D pour tout ce qui implique une différence de hauteur, et la distance 2D quand seule la surface au sol compte.

  3. Étape 3:

    Dérivez votre rayon de vérification à partir de cela. Un marqueur à 20 mètres, l'invite d'interaction à 2 mètres est un schéma courant.

  4. Étape 4:

    Copiez la ligne Lua. Elle utilise la forme de soustraction vectorielle, plus rapide que Vdist.

Questions fréquemment posées

Dois-je utiliser #(a - b) ou Vdist ?

Utilisez #(a - b). C'est de l'arithmétique vectorielle native dans le runtime Lua, tandis que Vdist est une native du jeu et chaque appel native engendre une surcharge. Dans une boucle qui tourne à chaque frame, la différence est mesurable.

Quand la distance 2D est-elle la bonne ?

Chaque fois que la hauteur ne doit pas compter, par exemple une zone couvrant tous les étages d'un bâtiment, ou un marqueur sur une pente. Avec la distance 3D, un joueur à l'étage supérieur sort de la zone, ce qui est perçu comme un bug.

Comment éviter une vérification de distance à chaque frame ?

Utilisez une boucle à deux étapes. Mettez en veille 1000 ms quand le joueur est loin, et seulement quand il est dans le rayon extérieur passez à une boucle 0 ms pour l'interaction réelle. Cela seul fait passer la plupart des scripts de plusieurs millisecondes à presque zéro en idle.

Puis-je comparer les distances au carré à la place ?

Oui, cela évite la racine carrée. Comparez #(a - b) à un seuil au carré uniquement si vous élevez aussi le seuil au carré. C'est une vraie optimisation uniquement dans les boucles sur de nombreuses entités, sinon la lisibilité prime.