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

Unity'de NavMeshAgent.remainingDistance ile Yol Bulma Mesafesini Ölçme

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

Unity oyun motorunda yapay zeka (AI) tabanlı karakter hareketlerini kontrol etmek için sıklıkla kullanılan NavMeshAgent bileşeni, hedef noktalara doğru yol bulmayı ve hareket etmeyi sağlar. Hedefe kalan mesafeyi dinamik olarak takip etmek, birçok oyun mekaniği için kritik öneme sahiptir. Bu yazıda, NavMeshAgent.remainingDistance özelliğinin ne işe yaradığını, nasıl kullanılacağını ve bazı pratik örneklerle nasıl uygulanacağını detaylı olarak inceleyeceğiz.

https://youtu.be/CHV1ymlw-P8

NavMeshAgent.remainingDistance Nedir?


NavMeshAgent.remainingDistance, NavMeshAgent bileşeninin bağlı olduğu oyun nesnesinin hedefe olan kalan mesafesini (birim: metre) döndüren bir float değeridir. Bu değer, NavMeshAgent'ın yol bulma işlemi sırasında sürekli güncellenir. Hedefe ulaşıldığında veya yol bulma işlemi başarısız olduğunda, değeri sıfıra yaklaşır.

Önemli Notlar



  • remainingDistance değeri, NavMeshAgent'ın takip ettiği yolun uzunluğudur. Doğrudan hedefe olan düz çizgi mesafesi değildir.

  • Yol bulma işlemi sırasında engellerle karşılaşıldığında, remainingDistance değeri dinamik olarak değişir.

  • Hedefe ulaşıldığında remainingDistance sıfır olmayabilir, ancak çok küçük bir değere yaklaşır. Bu değeri sıfırla direkt karşılaştırmak yerine, küçük bir tolerans değeri kullanmak daha güvenilirdir.


NavMeshAgent.remainingDistance Kullanımı


remainingDistance özelliğini kullanarak, hedefe olan mesafeye bağlı olarak farklı aksiyonlar tetikleyebilirsiniz. Örneğin, hedefe yaklaştığında animasyon değiştirme, ses efekti çalma veya başka bir davranışa geçme gibi işlemler gerçekleştirebilirsiniz.

Örnek Kod (C#):



using UnityEngine;

public class CheckDistance : MonoBehaviour
{
public NavMeshAgent agent;
public float threshold = 1f; // Hedefe yaklaşma eşiği

void Update()
{
if (agent.remainingDistance < threshold)
{
Debug.Log("Hedefe yaklaşıldı!");
// Hedefe yaklaştığında yapılacak işlemler buraya yazılır.
}
}
}


Bu örnek kodda, threshold değişkeni, hedefe yaklaşma eşiğini belirtir. Eğer agent.remainingDistance bu eşiğin altına düşerse, "Hedefe yaklaşıldı!" mesajı konsola yazdırılır. Bu kısma, hedefe yaklaştığında gerçekleştirilmesini istediğiniz diğer işlemleri ekleyebilirsiniz.

Pratik Uygulama Örneği: Düşman AI


Bir düşman AI karakteri tasarladığınızı düşünün. Bu karakter, oyuncunun bulunduğu konuma doğru hareket etmeli ve belirli bir mesafeye yaklaştığında saldırıya geçmelidir. remainingDistance özelliğini kullanarak bu davranışı kolayca uygulayabilirsiniz.

using UnityEngine;

public class EnemyAI : MonoBehaviour
{
public NavMeshAgent agent;
public Transform player;
public float attackDistance = 2f;

void Update()
{
agent.SetDestination(player.position);

if (agent.remainingDistance < attackDistance)
{
// Saldırı animasyonu ve işlemleri buraya ekleyin
Debug.Log("Saldırı!");
}
}
}


Bu örnekte, düşman sürekli olarak oyuncunun konumuna doğru hareket eder. attackDistance eşiğinin altına düştüğünde ise "Saldırı!" mesajı yazdırılır ve saldırı animasyonu veya işlemleri burada eklenebilir. [YOUTUBE_VIDEO_BURAYA]

Sonuç


NavMeshAgent.remainingDistance, Unity'de yol bulma işlemlerinde hedefe kalan mesafeyi takip etmek için son derece kullanışlı bir özelliktir. Bu özelliği kullanarak, oyunlarınıza daha dinamik ve gerçekçi AI davranışları ekleyebilirsiniz. Unutmayın ki, remainingDistance değeri yolun uzunluğunu temsil eder ve hedefe olan düz çizgi mesafesiyle aynı olmayabilir. Küçük bir tolerans değeri kullanarak, hedefe ulaşıldığını daha güvenilir bir şekilde tespit edebilirsiniz.

🧠 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!