Unity: как получить расстояние между двумя объектами

Чтобы получить расстояние между двумя объектами в Unity, вы можете использовать различные методы. Вот несколько подходов, которые вы можете использовать:

  1. Vector3.Distance: метод Vector3.Distance вычисляет евклидово расстояние между двумя точками в трехмерном пространстве. Вы можете использовать его для расчета расстояния между положениями двух объектов. Вот пример:
using UnityEngine;
public class DistanceCalculator : MonoBehaviour
{
    public Transform object1;
    public Transform object2;
    private void Start()
    {
        float distance = Vector3.Distance(object1.position, object2.position);
        Debug.Log("Distance: " + distance);
    }
}
  1. Vector3.Magnitude: метод Vector3.Magnitude вычисляет величину вектора, которая эквивалентна расстоянию от начала координат до кончика вектора. Вы можете вычесть положения двух объектов, чтобы получить вектор между ними, а затем вычислить его величину. Вот пример:
using UnityEngine;
public class DistanceCalculator : MonoBehaviour
{
    public Transform object1;
    public Transform object2;
    private void Start()
    {
        Vector3 vector = object2.position - object1.position;
        float distance = vector.magnitude;
        Debug.Log("Distance: " + distance);
    }
}
  1. Mathf.Distance: метод Mathf.Distance вычисляет расстояние между двумя точками в 2D-пространстве. Если вы хотите рассчитать расстояние между двумя объектами, проецируемыми на плоскость XZ (игнорируя ось Y), вы можете использовать этот метод. Вот пример:
using UnityEngine;
public class DistanceCalculator : MonoBehaviour
{
    public Transform object1;
    public Transform object2;
    private void Start()
    {
        Vector2 object1Position = new Vector2(object1.position.x, object1.position.z);
        Vector2 object2Position = new Vector2(object2.position.x, object2.position.z);
        float distance = Mathf.Distance(object1Position, object2Position);
        Debug.Log("Distance: " + distance);
    }
}
  1. SqrMagnitude: Если вам нужно только сравнить расстояния и не требуется точное значение расстояния, вы можете использовать свойство sqrMagnitude вектора между объектами. Сравнение квадратов величин вычислительно дешевле, чем вычисление фактических расстояний. Вот пример:
using UnityEngine;
public class DistanceCalculator : MonoBehaviour
{
    public Transform object1;
    public Transform object2;
    private void Start()
    {
        Vector3 vector = object2.position - object1.position;
        float squaredDistance = vector.sqrMagnitude;
        Debug.Log("Squared Distance: " + squaredDistance);
    }
}