Devlog без QA | Розробка ігор
633 subscribers
268 photos
102 videos
510 links
Unity/Новини/Ідеї/Натхнення й інший якісний (а можливо і не дуже) контент тут!

Зв’язок: @DevAndrew

Анти-скам бот: @IndieSafeBot
Download Telegram
🔍Що таке Vector3.Distance і чому не завжди варто використовувати його?

Vector3.Distance — це дуже зручний метод, який допомагає дізнатись, наскільки далеко одна точка (вектор) знаходиться від іншої у 3D-просторі.

По суті, це звичайна відстань між двома точками у просторі. Ніби ти вимірюєш рулеткою відстань між двома об’єктами у світі гри.

Використання цього методу дуже поширене, адже у геймдеві постійно треба перевіряти, чи близько ворог до гравця, чи потрапив куля в ціль, або де найближчий чекпоінт.

🧠 Як працює Vector3.Distance?
float distance = (a - b).magnitude;

де magnitude — довжина вектора, що потребує виклику Mathf.Sqrt(...).
magnitude = Mathf.Sqrt(x*x + y*y + z*z);

І тут виникає підводний камінь — квадратний корінь це дорога операція для процесора. Хоча різниці практично нема. Просто як цікавий факт 💡

⚡️ Оптимальна альтернатива використання квадрату відстані:
public static float SqrDistance(Vector3 first, Vector3 second)
{
float deltaX = first.x - second.x;
float deltaY = first.y - second.y;
float deltaZ = first.z - second.z;
return deltaX * deltaX + deltaY * deltaY + deltaZ * deltaZ;
}


🎯 Де це корисно?

Наприклад, коли потрібно перевірити, чи об’єкт знаходиться в межах певного радіусу — точне значення відстані не потрібне:
public static bool WithinRadius(Vector3 first, Vector3 second, float distance)
{
return SqrDistance(first, second) < distance * distance;
}

⚡️ Так ми уникаємо виклику Mathf.Sqrt() і отримуємо кращу продуктивність, особливо якщо це викликається кожен кадр 💪

💻 | GAMEDEV UA | #уроки #unitytips #vector #distance #squaredistance
👍9🔥4