Unity Eğitim
Dersler
Forum Sınav Merkezi Premium 💎
C# Dersleri

Unity'de Vector3.Distance() Metodu ile İki Nokta Arasındaki Mesafe Hesaplama

Paylaşan: Unity Eğitim 06 September 2025 3 dakika okuma 138 görüntülenme

Unity oyun motorunda, oyun dünyasındaki nesnelerin konumlarını ve hareketlerini yönetmek için vektörler (Vector3) kullanılır. İki nesne arasındaki mesafeyi hesaplamak birçok durumda gereklidir; örneğin, bir düşmanın oyuncuya olan uzaklığını kontrol etmek, bir topun hedefe olan mesafesini belirlemek veya bir hedef belirleme sistemi geliştirmek gibi. Bu işlemi kolayca gerçekleştirmek için Unity, Vector3.Distance() metodunu sağlar.

Vector3.Distance() Metodunun Tanımı


Vector3.Distance() metodu, iki Vector3 vektörü arasındaki Öklid (Euclidean) uzaklığını hesaplar. Öklid uzaklığı, iki nokta arasındaki doğrusal mesafeyi temsil eder. Metot, iki Vector3 argüman alır ve float tipinde bir değer döndürür; bu değer, iki vektör arasındaki mesafeyi gösterir.

Metot İmzası


public static float Distance(Vector3 a, Vector3 b);

Burada:

  • a: İlk Vector3 vektörü.

  • b: İkinci Vector3 vektörü.

  • float: İki vektör arasındaki mesafeyi temsil eden döndürülen değer.


Vector3.Distance() Kullanımı: Örnekler


Örnek 1: İki Oyun Nesnesi Arasındaki Mesafe


İki oyun nesnesi (örneğin, oyuncu ve bir düşman) arasındaki mesafeyi hesaplamak için Vector3.Distance() metodunu kullanabiliriz.
using UnityEngine;

public class DistanceExample : MonoBehaviour
{
public GameObject player;
public GameObject enemy;

void Update()
{
float distance = Vector3.Distance(player.transform.position, enemy.transform.position);
Debug.Log("Player-Enemy Distance: " + distance);
}
}


Bu kod, her karede oyuncunun ve düşmanın transform bileşenlerinin position özelliklerini kullanarak aralarındaki mesafeyi hesaplar ve bunu konsola yazar.

Örnek 2: Belirli Bir Noktaya Olan Mesafe


Bir oyun nesnesinin belirli bir noktaya olan mesafesini hesaplamak için de bu metodu kullanabiliriz.
using UnityEngine;

public class DistanceToTarget : MonoBehaviour
{
public Vector3 targetPosition;

void Update()
{
float distance = Vector3.Distance(transform.position, targetPosition);
Debug.Log("Distance to Target: " + distance);
}
}


Bu kod, her karede oyun nesnesinin konumunu (transform.position) targetPosition ile karşılaştırır ve aralarındaki mesafeyi hesaplar.

Vector3.Distance() ile Performans


Vector3.Distance() metodu, karekök işlemi içerdiği için performans açısından biraz pahalı olabilir. Eğer çok sayıda mesafe hesaplaması yapıyorsanız ve mutlak mesafe değerine değil de mesafenin karesine ihtiyacınız varsa, Vector3.SqrMagnitude metodunu kullanarak performansı artırabilirsiniz. Bu metot, karekök işlemini atlar ve daha hızlı bir hesaplama sağlar.
float sqrDistance = Vector3.SqrMagnitude(player.transform.position - enemy.transform.position);

Mesafe karşılaştırmaları yaparken (örneğin, bir düşmanın belirli bir yarıçap içinde olup olmadığını kontrol etmek), sqrDistance kullanmak daha etkili olacaktır çünkü karekök alma işlemine gerek kalmaz.

Özet


Vector3.Distance() metodu, Unity'de iki vektör arasındaki mesafeyi hesaplamak için basit ve kullanışlı bir yoldur. Ancak, performans kritik uygulamalar için Vector3.SqrMagnitude metodunu göz önünde bulundurmak önemlidir. Bu metot, oyun geliştirmede birçok senaryoda kullanılabilir ve oyun mekaniğini geliştirmek için güçlü bir araçtır.

 

🧠 Ders Sonu Değerlendirme Testi

Dersi tamamladıktan sonra bilgilerinizi test edin ve ekstra puanlar kazanın.

🔥 +50 XP Ödül
🔒

Sınava Katılmak İçin Giriş Yapın

Bu ders sonu testini çözebilmek, bilginizi test edip **+50 XP** kazanmak ve **Sınav Şampiyonu** rozetinin kilidini açmak için üye girişi yapmalısınız.

Yorumlar (0)

Yorum yazabilmek ve derslere katkıda bulunabilmek için giriş yapmalısınız.

İlk yorumu siz yapın!